function animate(obj,target){
clearInterval(obj.timer);
obj.timer=setInterval(function(){
var step=(target-obj.offsetLeft)/10;//可能出现小数的情况 要取整 正数向上取整 负数向下取整 (往下取整 后面步长越来越小 出现的小数只能是0 还是有误差 往上取 会出现1 慢慢填成500)
console.log(step);
step=step>0?Math.ceil(step):Math.floor(step);
if(obj.offsetLeft==target){
clearInterval(obj.timer);
}
obj.style.left=obj.offsetLeft+step+'px';//1的位置加一个逐渐变小的值可以实现缓动 步长公式:(目标值-现在的位置)/10 10越大停的越慢
},15)
}
如果步长是正数的话,向下取整会造成后面的步长减到小于1时,之后的值都为0,所以还是会产生定位位置的误差(移动距离小于目标位置大小)。如果向上取整会将后面的小于1的步长都变成1,再慢慢的填到target,直到移动距离等于目标位置。理论上,步长后面除数字很大的话,会造成整个运动看起来像匀速运动(不断的用1来填 这样来想选10还是有道理的)。
核心:步长为正 向上取整 步长为负 向下取整