js缓动动画封装的示例分析

这篇文章主要介绍js缓动动画封装的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

主要用到offsetLeft、Math.ceil、Math.floor、Math.abs。

js缓动动画封装的示例分析

注意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缓动动画封装的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!

发布于 2021-03-13 15:40:43
收藏
分享
海报
0 条评论
157
上一篇:typescript指的是什么 下一篇:XML可以用来干什么
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码