同時(shí)運(yùn)動的寬度問題
??function?startMove(obj,json,fn){//使用json以同時(shí)傳多個(gè)屬性和目標(biāo)值 clearInterval(obj.timer); obj.timer=setInterval(function(){ for(var?attr?in?json){ var?icur=0; if(attr=='opacity'){ icur=Math.round(parseFloat(getStyle(obj,attr))*100); }else{ icur=parseInt(getStyle(obj,attr)); } var?speed=(json[attr]-icur)/8; speed=speed>0?Math.ceil(speed):Math.floor(speed);//由于speed精度不夠,導(dǎo)致數(shù)值較大時(shí)會導(dǎo)致運(yùn)動的結(jié)果打不到預(yù)期值??? if(icur==json[attr]){ clearInterval(obj.timer); if(fn){//上一個(gè)動作結(jié)束后,如果存在fn則調(diào)用fn fn(); } }else{ if(attr=='opacity'){ obj.style.filter='alpha(opacity:'+(icur+speed)+')'; obj.style.opacity=(icur+speed)/100; }else{ obj.style[attr]=icur+speed+"px"; } } } },30); } function?getStyle(obj,attr){//通過此函數(shù)可無傷取到style,而不受其他樣式的影響 if(obj.currentStyle){//IE瀏覽器 return?obj.currentStyle[attr]; }else{ return?getComputedStyle(obj,false)[attr]; } }
同時(shí)運(yùn)動時(shí),執(zhí)行onmouseover后寬度并沒有達(dá)到400,是因?yàn)閟peed的精度不夠嗎?還是其他的原因?求解答
2016-05-16
if(icur==json[attr]){
????????????????????clearInterval(obj.timer);
????????????????????if(fn){//上一個(gè)動作結(jié)束后,如果存在fn則調(diào)用fn
????????????????????????fn();
????????????????????}
????????????????}
看這段代碼,同時(shí)運(yùn)動時(shí),當(dāng)某個(gè)屬性的當(dāng)前值達(dá)到目標(biāo)值時(shí),就會關(guān)閉定時(shí)器,那么其他屬性也就不得不停止運(yùn)動,所以寬度達(dá)不到目標(biāo)值
2016-05-14
老師后面已經(jīng)講解了,明白了。。。