btn2.onclick = function() { animate(box,400); } // 自定义属性 object // 基本封装 function animate(obj,target) { clearInterval(obj.timer); // 要开启定时器,先清除以前定时器 // 有2个参数 第一个 对象谁做动画 第二 距离 到哪里 obj.timer = setInterval(function() { // 如果 offsetLeft 大于了 target 目标位置就应该反方向 var speed = obj.offsetLeft < target ? 10 : -10; var result = target - obj.offsetLeft; // 他们的值 等于 0 说明完全相等 // 动画的原理 obj.style.left = obj.offsetLeft + speed + "px"; if(Math.abs(result) == 0) { obj.style.left = target + "px"; //抖动问题 clearInterval(obj.timer); } },30); }