JS---封装缓动(变速)动画函数---增加多个任意多个属性
程序员文章站
2022-05-31 22:05:47
封装缓动动画函数 增加多个任意多个属性 在原来缓动动画函数,增加任意一个属性的基础上,做了如下改变 1. 原来function animate(element, attr, target),三个变量,改为用json对象来装一对:属性:目标位置的值,变为function animate(element ......
封装缓动动画函数---增加多个任意多个属性
在原来缓动动画函数,增加任意一个属性的基础上,做了如下改变
1. 原来function animate(element, attr, target),三个变量,改为用json对象来装一对:属性:目标位置的值,变为function animate(element, json)
2. 之前的变速动画函数,都任意一个属性,改变其当前属性的位置,到达目标属性。现在有多个任意属性,用json对象装,所以要遍历json对象里面每一个值 for(var key in json){}, key就是这里的attr, 所以遍历的for(var attr in json)
3. 当前属性对应的目标值,var target就是json里面值的目标,var target=json[attr];
4. 添加了flag的判断,是为了,保证在json中所有的值都到达目的位置后,再清除定时器
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>title</title> <style> * { margin: 0; padding: 0; } div { margin-top: 30px; width: 200px; height: 100px; background-color: green; position: absolute; left: 0; top: 0; } </style> </head> <body> <input type="button" value="移动到400px" id="btn1" /> <div id="dv"> </div> <script src="common.js"></script> <script> //点击按钮,改变宽度到达一个目标值 //点击按钮,改变宽度到达一个目标值,高度到达一个目标值 //获取任意一个元素的任意一个属性的当前的值 function getstyle(element, attr) { return window.getcomputedstyle ? window.getcomputedstyle(element, null)[attr] : element.currentsytle[attr] || 0; } function animate(element, json) { clearinterval(element.timeid); element.timeid = 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 > 0 ? math.ceil(step) : math.floor(step); current += step;//移动后的值 element.style[attr] = current + "px"; if (current != target) { flag = false; } } if (flag) { clearinterval(element.timeid); } //测试代码 console.log("目标:" + target + ",当前" + current + ",每次移动的步数" + step); }, 20) } my$("btn1").onclick = function () { animate(my$("dv"), { "width": 400, "height": 200, "left": 500, "top": 80 }) }; </script> </body> </html>
效果如下:
上一篇: 嘉庆皇帝的下场有多惨 被刺时身边一百多人只有六个人出手
下一篇: 如何在QML使用Sqlite数据库
推荐阅读
-
JS---封装缓动(变速)动画函数---增加任意一个属性
-
JS---封装缓动(变速)动画函数---增加多个任意多个属性
-
JS---封装缓动(变速)动画函数---增加任意多个属性&增加回调函数
-
JS---最终版本--封装缓动(变速)动画函数---增加任意多个属性&回调函数&层级&透明度
-
JavaScript变速动画函数封装添加任意多个属性
-
JS---最终版本--封装缓动(变速)动画函数---增加任意多个属性&回调函数&层级&透明度
-
JS---封装缓动(变速)动画函数---增加多个任意多个属性
-
JS---封装缓动(变速)动画函数---增加任意多个属性&增加回调函数
-
JavaScript变速动画函数封装添加任意多个属性
-
JS---封装缓动(变速)动画函数---增加任意一个属性