这篇文章主要介绍js缓动动画封装的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
主要用到offsetLeft、Math.ceil、Math.floor、Math.abs。
注意offsetLeft获取到的的值为四舍五入的style.left的数值,offsetLeft = Math.round(style.left的数值部分) 比如style.left = 369.4px, 获取到的offsetLeft = 369。
<!doctypehtml> <htmllang="en"> <head> <metacharset="UTF-8"> <title>缓动动画</title> <style> #slow_action{ width:100px; height:100px; background:pink; position:absolute; } </style> </head> <body> <buttonid="btn1">运动到400</button> <buttonid="btn2">运动到0</button> <pid="slow_action"></p> </body> <script> varbtn1=document.getElementById("btn1") varbtn2=document.getElementById("btn2") varp=document.getElementById("slow_action") /** *动画原理=盒子位置+步长(步长越来越小) *盒子位置=盒子本身的位置+(目标位置-盒子本身位置)/10 */ btn1.onclick=function(){ fn(p,400) } btn2.onclick=function(){ fn(p,0) } functionfn(ele,target){ clearInterval(ele.timer); ele.timer=setInterval(function(){ //vartarget=400; //最后10像素都是1px向目标位置移动最后到达指定位置 varstep=(target-ele.offsetLeft)/10; //差值大于10的时候向上取整小于0的时候向下取整 step=step>0?Math.ceil(step):Math.floor(step) ele.style.left=ele.offsetLeft+step+"px"; //检测定时器是否停止 console.log(1) //跳出条件目标位置-当前位置的绝对值,小于步长 if(Math.abs(target-ele.offsetLeft)<Math.abs(step)){ ele.style.left=target+"px"; clearInterval(ele.timer) } },30); } </script> </html>
以上是“js缓动动画封装的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!
node如何链接多个JS模块
前后端全部用 JS 开发是什么体验(Hybrid + Egg.js经验分享)上
换一种思维看待PHP VS Node.js
JS遍历数组的三种方法map、forEach与filter实例详解
物联网宠儿mqtt.js那些事儿
js不跳转传值php
Node.js基本内容和知识点
简单的说node.js就是运行在服务端的JavaScript,起初段定位是后端开发语言,由于技术的不够成熟,一般小型项目...
为什么选择 Node.js 作为 Web 应用程序?
node.js后台快速搭建在阿里云(一)(express篇)
基于WebRTC 如何借助Laravel 7和Vue.js创建视频聊天应用
本文介绍了如何借助Vue.js和laravel7创建一个简单的视频聊天应用。如何实现视频聊天我们会用到一个免...
用户名
密码
记住登录状态 忘记密码?
邮箱
确认密码
我已阅读并同意 用户协议