本篇文章给大家带来的内容是关于js中抖动的实现原理(附代码) ,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
抖动的实现原理其实就是让节点元素进行位置的偏移,所以在实现此功能的时候最好节点元素进行绝对定位,然后来修改它们的top和left值。
这里有几个要点,第一是要准备好需要偏移的频率,这个可以通过把偏移距离放到数组中来控制偏移距离,偏移距离跳动幅度越小,效果就越平稳。定时器时间决定了节点抖动的速度。
代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Made with Thimble</title>
<link rel="stylesheet" href="style.css">
<style>
img{
width:300px;
height: 400px;
position:absolute;
top:20px;
left:150px;
}
</style>
</head>
<body>
<img id="img1" src="https://newimg.uumnt.cc:8092/Pics/2017/0622/03/06.jpg">
</body>
<script>
var oImg = document.getElementById('img1');
oImg.onclick = function(){
//this 到函数里面作用域会变,这里赋值先变成局部
var that = this;
shaking(that,'top',function(){
shaking(that,'left');
});
};
// 抖动函数封装 attr:left水平抖动 top:垂直抖动
function shaking(obj,attr,callback){
var pos = parseInt(getStyle(obj,attr));
var arr = [];
var num = 0;
for(var i=20;i>0;i-=2){
arr.push(i,-i);
}
arr.push(0);
clearInterval(obj.shaking);
obj.shaking = setInterval(function(){
obj.style[attr] = pos + arr[num] + 'px';
num ++;
if(num === arr.length){
clearInterval(obj.shaking);
callback && callback();
}
},50);
}
// 获取节点对象的样式属性值
function getStyle(obj,attr){
if(obj.currentStyle){
return obj.currentStyle[attr];
}else{
return window.getComputedStyle(obj,false)[attr];
}
}
</script>
</html>相关推荐:
一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统。她可以用于所有的Web应用程序,如网站管理后台,网站会员中心,CMS,CRM,OA。所有前端后台代码封装过后十分精简易上手,出错效率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。 您是否在找一套合适后台管理系统。 您是否在找一套代码易读易懂后台
885
以上就是js中抖动的实现原理(附代码)的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号