原生JS实现缓动的小球案例
缓动的小球:就是当鼠标移动到小球内,小球随着鼠标的移动,小球跟着移动,而且小球会有很多,跟随者第一个小球接着运动。要实现这样的效果也就是要有以下的操作:
1.小球的缓存移动其实就是有很多小球(div),他们每个小球的出发点和目的点都是一样的,只是控制间隔时间再运动。
2.再用for循环分别获取到每个小球,使每次读取到的i(数组下标)和间隔的一个关系:50*i.
要移动div形成美丽的变化,其实每个div的出发点和目的点是一样的, *只需要改变他们之间发生的间隔。 * 用for遍历每次每次鼠标移动后的每一个div都去间隔定时发生style的left和top的改变 * 另外注意一下let操作(50*i.)这个关系很重要,详解:
也就是我第一个小球(第一个遍历的小球,i为0的下标)花了 0*50=0 毫秒的时间开始随着鼠标进行运动
然后我第二个小球(第二个遍历的小球,i为1的下标)花了 1*50=50 毫秒的时间开始随着鼠标进行运动,比第一个小球晚了50毫妙进行运动
···················
但是他们的出发点和目的点都是一样的,所以,会产生缓动的效果。
源码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>缓动的小球</title>
<style>
*{
padding: 0;
margin: 0;
}
div{
background-color: hotpink;
position: absolute;
border-radius: 50%;
width: 40px;
height: 40px;
top:0;
left:0;
}
</style>
</head>
<body>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<script>
/*我对整个文档进行MouseMove事件,left和top变量是指鼠标移动的那个点参照于浏览器的那个距离
* 在这里我把鼠标设置为始终在小球的中心,不管开始第一下鼠标点击点在小球的哪里,在移动中始终在小球中心
* */
var divs=document.getElementsByTagName("div");
document.onmousemove=function (event) {
var left=event.clientX;
var top=event.clientY;
/*这里是核心,要移动div形成美丽的变化,其实每个div的出发点和目的点是一样的,
*只需要改变他们之间发生的间隔。
* 用for遍历每次每次鼠标移动后的每一个div都去间隔定时发生style的left和top的改变
* 另外注意一下let操作
* */
for(let i=0;i<divs.length;i++){
divs[i].style.backgroundColor="rgb("+randomNum(1,255)+","+randomNum(1,255)+","+randomNum(1,255)+")";
setTimeout(function () {
divs[i].style.left=left-divs[i].offsetWidth/2+"px";
divs[i].style.top=top-divs[i].offsetWidth/2+"px";
},50*i);
}
}
//生成随机数的函数
function randomNum(n,m) {
return parseInt(Math.random()*(m-n+1)+n);
}
</script>
</body>
</html>声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 动态配置模块实现模块拖拽效果
- 下一篇: 超酷动态图片展示墙JS特效制作方法
