使用js缓动动画封转
来源:互联网 发布:电缆线路设计软件 编辑:程序博客网 时间:2024/05/17 07:02
/** * @param ele 目标元素 * @param json json对象 * @param fn 回调函数 */function animate(ele,json,fn){ //清除定时器 clearInterval(ele.timer); ele.timer = setInterval(function(){ //判断动作是否执行完毕 var bool = true; //遍历json的属性 for(var k in json){ //获取当前位置 var leader = parseInt(getStyle(ele,k)) || 0; //获取速度 var step = (json[k] - leader)/10; //判定速度的正负,并对其进行向上取整或者向下取整 保证能停止计时器 step = step>0?Math.ceil(step):Math.floor(step); //将初始值变化 leader = leader + step; //移动 ele.style[k] = leader + "px"; //清除定时器 //判断: 目标值和当前值的差大于步长,就不能跳出循环 //不考虑小数的情况:目标位置和当前位置不相等,就不能清除清除定时器。 if (json[k] !== leader){ bool = false; } } //当所有动作执行完毕,就清理定时器 if (bool){ clearInterval(ele.timer); //如果还有回调函数,继续执行回调函数 if (fn){ fn(); } } },10);}/** * 获取元素样式 * @param ele 目标元素 * @param attr 元素属性 * @returns {*} 返回属性值 */function getStyle(ele,attr){ if(window.getComputedStyle){ return window.getComputedStyle(ele,null)[attr]; } return ele.currentStyle[attr];}
下面我们就来测试一波
html代码如下:
<body> <button>来回运动</button> <div></div></body>
var btn = document.getElementsByTagName("button")[0];var div = document.getElementsByTagName("div")[0];btn.onclick = function () { var json1 = {"left":300,"top":200,"width":300,"height":200}; var json2 = {"left":10,"top":30,"width":100,"height":100}; animate(div,json1, function () { animate(div,json2, function () { animate(div,json1,function(){ animate(div,json2); }); }); });}
运行结果:
阅读全文
1 0
- 使用js缓动动画封转
- 原生js使用缓动函数库easing动画效果
- JS封装缓动动画函数
- js 匀速/缓动动画 简单封装
- js缓动动画函数封装
- js缓动动画及其封装
- js-匀速/缓动动画-简单封装
- 05-JS特效-缓动动画
- js--缓动动画、匀速运动、无缝滚动
- 缓动动画插件tween.js
- TweenLite动画引擎JS缓动简单版效果分享
- Tween.js各类原生动画运动缓动算法
- 3.8 JS网址编码&&缓动动画公式
- 003-js缓动动画的一个小bug
- 学习缓动动画
- 缓动动画 animate
- 缓动动画
- 缓动动画原理
- LeetCode week 1 : Reverse Pairs(493)
- NSURLSession
- 泛型的意义和作用是啥?
- 加密与CA
- Eclipse查看文件的本地历史记录
- 使用js缓动动画封转
- 关于RecyclerView 的一些想法笔记
- Java基础精选,你答对了几道-
- SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)
- 快速排序
- bzoj5016 [Snoi2017]一个简单的询问
- php输出语句
- 面试题——C/C++经典问题,及面试笔试题
- 第5章 排序 —— 5.4 归并排序