//el:谁要做运动; target:运动到哪; step:运动步长; fn:回调
var time = null;
function lineamove(el, target, step, fn) {
var startLift = el.offsetLeft;
// 当前位置与目标位置一致则停止不动
if (startLift == target) {
return;
}
// 判断step的正负
step = target > startLift ? Math.abs(step) : -1 * Math.abs(step);
// 停止定时器
clearInterval(time);
time = setInterval(function() {
// 获取当前的Left
var currentLeft = el.offsetLeft;
// 增加步长
currentLeft += step;
// 赋值
el.style.left = currentLeft + 'px';
// 做差
var cha = target - currentLeft;
// 判断定时器是否停止
if (Math.abs(cha) < Math.abs(step)) {
el.style.left = target + 'px';
clearInterval(time);
// 回调
if (fn) {
fn();
}
}
}, 16.7)
}