标签:
如题,什么意思呢?
$(‘#box‘).animate({
start:200, attr:‘left‘, step:13, alter:400 //增量 })
这时写好的动画函数animate用法
上面起始值是200,步长13,目标值是200+400=600,那么每次我都运动13,那么他只运动到590然后再运动到603然后判断并重新赋值到600,突兀吧?先看看我是怎么判断到达终点的
if((step>0&&target<=parseInt(getStyle(element,attr)))||(step<0&&target>=parseInt(getStyle(element,attr)))){ element.style[attr]=target+‘px‘; clearInterval(timer); }else{ element.style[attr]=parseInt(getStyle(element,attr))+step+‘px‘; }
这个step只需要传递正值,函数会自动赋值正还是负,如果step>0这是正方向移动并且目标值<=现在的值那么停止动画并赋新的值,所以导致突兀
再看看改进的
//改了以后:又简洁又好用啊 if(Math.abs(target-parseInt(getStyle(element,attr)))<=Math.abs(step)){ element.style[attr]=target+‘px‘; clearInterval(timer); }else{ element.style[attr]=parseInt(getStyle(element,attr))+step+‘px‘; }
只需要判断Math.abs(目标值减现在的值)是否小于等于Math.abs(step)如果成立则停止 这样当我运动到590时,会进入这个判断然后下一个动作就是600,就不那么生硬啦!
标签:
原文地址:http://www.cnblogs.com/yymb/p/5726801.html