qq_空之岚_0
2016-12-03 08:42
function startMove(obj,iTarget){
var speed=(iTarget-obj.offsetWidth)/10;
speed=speed>0?Math.ceil(speed):Math.floor(speed);
clearInterval(obj.timer);
obj.timer=setInterval(function(){
//var speed=(iTarget-obj.offsetWidth)/10;
//speed=speed>0?Math.ceil(speed):Math.floor(speed);
if(obj.offsetWidth==iTarget){
clearInterval(obj.timer);
}else{
obj.style.width=obj.offsetWidth+speed+"px"
}
},30);
}
你写在外面只是在start的时候对spend更新了一次,计时器运行时速度不再更新,所以整个过程中速度其实是恒定的,而写在计时器内部,则是每30ms更新一下速度,使速度减慢,这样才达到了缓冲的效果。
举个例子吧,比如说赛跑吧,老师喊预备跑的时候,你才开始跑对吧,然后这个时间已经在走了,但是是先开始你才跑的,所以这个也一样,是计时在前
JS动画效果
113924 学习 · 1443 问题
相似问题