// 缓冲运动函数
function buffMove(ele, json, fn) {
// ele: 元素
// json: 属性和目标值
// fn: 回调函数
// 1. 清楚定时器
clearInterval(ele.timer);
// 2. 开启新的定时器
ele.timer = setInterval(function () {
// 9. 假设本次循环已经到达结束值
var tag = true;
// 3. 每个属性都要改变一次
for (var k in json) {
// console.log(k, json[k]); // 属性 目标值
// 4. 获取当前值
if (k == 'opacity') {
var cur = parseInt(getStyle(ele, k) * 100);
} else {
var cur = parseInt(getStyle(ele, k));
}
// console.log(cur);
// 5. 求速度 = 路程 / 时间
var speed = (json[k] - cur) / 10;
// console.log(speed);
// 6. 取整
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
// 7. 结束值
var end = cur + speed;
// console.log(end);
// 10. 如果end和目标值不同 表示没有到达结束值
if (end != json[k]) {
tag = false;
}
// 8. 赋值给元素的对应的属性
if (k == 'opacity') {
ele.style[k] = end / 100;
} else {
ele.style[k] = end + 'px';
}
}
// console.log(tag);
// 11. 如果tag还是true 可以清楚定时器
if (tag) {
clearInterval(ele.timer);
fn && fn();
}
}, 10);
}