动画animate的封装

function getStyle(Ele,attr){
 if(window.getComputedStyle){
   return window.getComputedStyle(Ele,attr);
 }
   return Ele.currentStyle[attr];
}

function animate(Ele,json,callback){
//清空定时器,保证一个dom对象,只有一个定时器
 clearInterval(Ele.timer);
 Ele.timer=setInterval(()=>{
    "use strict";
     let flag=true;
     let current=0;     
     let target=0;
     let step=0;      
     for(var attr in json){
        if(attr=="opacity"){
           current=getStyle(Ele,attr)*100;
           target=json[attr]*100;
       }else{
           current=parseInt(getStyle(Ele,attr));        
           target=json[attr]
       }

        step=(target-current)/10;
        step=step>0?Math.ceil(step):Math.floor(step);        
            
        if(attr=="opacity"){
             Ele.style[attr]=(current+step)/100;
             Ele.style.filter=`Alpha(Opacity=${current+step})`;   
         }else if(attr=="zIndex"){
             Ele.style[attr]=json[attr]  
         }else{
            Ele.style[attr]=current+step+'px';
         }
          if(current!=target){
                flag=false; 
           }
    }   
         if(flag){
             clearInterval(Ele.timer);
             if(typeof(callback)=="function"){
                   callback();  
            }
          }     
   
  },50)

}

 

转载于:https://www.cnblogs.com/xxcnhj/p/11028280.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值