为什么执行完后 不能复原宽度 ,透明度可以。

来源:5-1 JS链式动画

qq_第四颗苹果_03207610

2016-06-10 21:05

function startMove(obj, attri,iTarget,fn){

clearInterval(obj.timer);

obj.timer=setInterval(function(){

            var ic=0;

                  if (attri=="opactiy") {

                  ic=Math.round(parseFloat(getStyle(obj,attri))*100)

                  }

                  else{

         ic=parseInt(getStyle(obj,attri))

     }

              var speed=(iTarget-ic)/10;

              speed=speed>0?Math.ceil(speed):Math.floor(speed);

              if (ic==iTarget) {

              clearInterval(obj.timer);

              if (fn) {

              fn();

              }

              }

              else{

         

             

              if(attri=='opacity'){

obj.style.opacity = (ic+speed)/100;

obj.style.filter='alpha(opacity:'+(ic+speed)+')';

}  

              else{

              obj.style[attri]=ic+speed+'px';

              }

         }

},50)

}

 function getStyle(obj,attr){

if(obj.currentStyle){

return obj.currentStyle[attr];//针对ie浏览器。

}else{

return getComputedStyle(obj,false)[attr];//针对firefox浏览器。

}

}


window.onload = function(){

var Li1=document.getElementById('li1');


Li1.onmousemove=function(){

startMove(Li1,'width',300,function(){

startMove(Li1,'opacity',500);

});

}

Li1.onmouseout=function(){

startMove(Li1,'opacity',200,function(){

startMove(Li1,'width',100);

})

}

}


写回答 关注

1回答

  • 进击的小埋
    2016-06-11 13:01:30

    应该是亮度超出了,opacity值的范围应该是0-100,你的值设置100-500太大了,改成0-100这个范围就好了

JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113925 学习 · 1443 问题

查看课程

相似问题