js缓动动画封装的示例分析
作者
这篇文章主要介绍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模块
node如何链接多个JS模块本文小编为大家详细介绍“node如何链...
-
前后端全部用 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创建一个简单的视频聊天应用。如何实现视频聊天我们会用到一个免...
