function animate(element, json) {
clearInterval(element.slowId);
element.slowId = setInterval(function () {
//假设全部到达目标值
var flag = true;
for (var attr in json) {
//获取元素的属性的值---即当前位置
var current = parseInt(getStyle(element, attr)); //数字类型
//获取当前所需属性对应的值
var target = json[attr];
//移动步数
var step = (target - current) / 10;
//step为正数遇到小数时就向上取整,step为负数遇到小数时就向下取整
step = step > 0 ? Math.ceil(step) : Math.floor(step);
current += step;
//如果当前位置不等于目标位置
element.style[attr] = current + "px";
if (current != target) {
flag = false;
}
}
//flag为真,清理定时器
if (flag) {
clearInterval(element.slowId);
}
//测试
console.log("目标位置:" + target + ",当前位置:" + current + ",每次移动步数:" + step);
}, 20);
实现动画对任意元素的多个属性操作
最新推荐文章于 2020-10-04 19:25:51 发布