課程
/前端開發
/JavaScript
/JS動畫效果
誰有這兩節的完整代碼么?跪求 么么
2018-01-31
源自:JS動畫效果 7-1
正在回答
//以下是老師封裝的函數,其余的css代碼自己寫就好了
function startMove(obj,json,fn) {
/*
obj為要改變的元素對象
json為屬性/值對,即要改變的屬性和值。用于同步運動
fn為回調函數,用于設置鏈式運動
*/
// 首先清除定時器
clearInterval(obj.timer);
obj.timer=setInterval(function(){
flag=true;
//對于同時改變元素多個屬性值的情況
for(var attr in json)
{
//獲取屬性值
var icur=0;? ?//初始化屬性值為0
if(attr=="opacity")
//獲取的透明度為小數(0-1),首先轉化為百分制(0-100),然后四舍五入取整
icur=Math.round(parseFloat(getStyle(obj,attr))*100);
}else{
icur=parseInt(getStyle(obj,attr));
}
// 判斷所有屬性值是否都達到目標值,一個未達到,即為false
if(icur!=json[attr])
flag=false;
//設置屬性改變的速度
var speed=0;
speed=(json[attr]-icur)/4;? ?//4為參數,可為任意值,越小改變速度越快
speed=speed>0?Math.ceil(speed):Math.floor(speed);? //取整
//改變屬性值
obj.style.filter="alpha(opacity:"+(icur+speed)+")";
obj.style.opacity=(icur+speed)/100;
obj.style[attr]=icur+speed+"px";
//待改變的屬性值同時完成一次改變后,判斷是否都達到目標值
if(flag)
// 如果存在回調函數,則調用之
if(fn)
fn();
},30)?
// 獲取css樣式
function getStyle(obj,attr) {
if(obj.currentStyle)
return obj.currentStyle[attr];? ?//IE8
return getComputedStyle(obj,false)[attr];? //IE 9 10 11支持? 別人測試
qq_神眷羽晶田_0 提問者
舉報
通過本課程JS動畫的學習,從簡單動畫開始,逐步深入各種動畫框架封裝
1 回答跪求源代碼
1 回答完整代碼
1 回答誰有這節課講的完美運動框架的源代碼???發我一份好不好?
1 回答求這節課的源碼
2 回答完美框架代碼沒有效果,誰能看看哪里錯了
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-02-28
//以下是老師封裝的函數,其余的css代碼自己寫就好了
function startMove(obj,json,fn) {
/*
obj為要改變的元素對象
json為屬性/值對,即要改變的屬性和值。用于同步運動
fn為回調函數,用于設置鏈式運動
*/
// 首先清除定時器
clearInterval(obj.timer);
obj.timer=setInterval(function(){
flag=true;
//對于同時改變元素多個屬性值的情況
for(var attr in json)
{
//獲取屬性值
var icur=0;? ?//初始化屬性值為0
if(attr=="opacity")
{
//獲取的透明度為小數(0-1),首先轉化為百分制(0-100),然后四舍五入取整
icur=Math.round(parseFloat(getStyle(obj,attr))*100);
}else{
icur=parseInt(getStyle(obj,attr));
}
// 判斷所有屬性值是否都達到目標值,一個未達到,即為false
if(icur!=json[attr])
{
flag=false;
}
//設置屬性改變的速度
var speed=0;
speed=(json[attr]-icur)/4;? ?//4為參數,可為任意值,越小改變速度越快
speed=speed>0?Math.ceil(speed):Math.floor(speed);? //取整
//改變屬性值
if(attr=="opacity")
{
obj.style.filter="alpha(opacity:"+(icur+speed)+")";
obj.style.opacity=(icur+speed)/100;
}else{
obj.style[attr]=icur+speed+"px";
}
}
//待改變的屬性值同時完成一次改變后,判斷是否都達到目標值
if(flag)
{
clearInterval(obj.timer);
// 如果存在回調函數,則調用之
if(fn)
{
fn();
}
}
},30)?
}
// 獲取css樣式
function getStyle(obj,attr) {
if(obj.currentStyle)
{
return obj.currentStyle[attr];? ?//IE8
}else{
return getComputedStyle(obj,false)[attr];? //IE 9 10 11支持? 別人測試
}
}