为了账号安全,请及时绑定邮箱和手机立即绑定

宽度和透明度实现同时运动,可是高度差了两个像素。

宽度和透明度实现同时运动,可是高度差了两个像素。

伴山客 2017-12-20 17:38:34
//封装函数,获取样式,解决offset全部属性下的BUGfunction getStyle(obj,attr){ if(obj.currentStyle){ return obj.currentStyle[attr]; }else{ return getComputedStyle(obj,false)[attr]; }}//封装动画框架function startMove(obj,json,fn){   //(对象,改变的属性,目标值,回调函数) clearInterval(obj.timer); obj.timer = setInterval(function(){ for(var attr in json){  //JSON实现同时运动 //取到当前值 var icur = 0; var flag = true;//假设 if(attr == "opacity"){ icur = Math.round(parseFloat(getStyle(obj,attr))*100);//处理透明度 }else{ var icur = parseInt(getStyle(obj,attr)); } //计算速度 var speed = (json[attr] - icur)/10; speed = speed>0?Math.ceil(speed):Math.floor(speed); //是否所有的运动都达到目标值 if(json[attr]!=icur){ flag = false; } if(attr == "opacity"){ icur += speed; obj.style.opacity = icur/100; obj.style.filter = 'alpha(opacity:'+icur+')'; }else{ obj.style[attr] = icur + speed +"px"; } } if(flag){ clearInterval(obj.timer); if(fn){ fn(); } } },50)}
查看完整描述

2 回答

?
QQ_随意

TA贡献51条经验 获得超28个赞

你是几个动画一起执行的,一个动画执行完之后了,就会停掉整个定时器。所以就会有的还没执行完,每个动画分开执行就好了。

查看完整回答
反对 回复 2018-01-12
  • 2 回答
  • 1 关注
  • 958 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信