美文网首页
JS实现一连串元素跟随鼠标效果

JS实现一连串元素跟随鼠标效果

作者: 知名大学士 | 来源:发表于2020-03-09 22:23 被阅读0次
效果图

思路

当鼠标移动时,获取到鼠标的位置,将第一个小球的位置设置为鼠标的位置,然后将剩余小球都设为其前一个小球的位置,这样就可以动起来了。

代码

首先建立基本HTML结构,我们使用div来做小球:

<div id="qiu">
        <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><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><div></div><div></div><div></div><div></div>
    </div>

CSS

#qiu div{
  width: 8px;
  height: 8px;
  background-color: red;
  border-radius: 50%;
  position: absolute;
  transition: all 0.1s;
}

逻辑

首先我们获取所有的小球div,并存放在一个变量中。

var qiu = document.getElementById("qiu").children;

当鼠标移动的时候,我们需要使小球改变位置:

document.onmousemove = function (e) {}

我先我们设置第0的小球的位置,分别为鼠标当前的坐标:

qiu[0].style.left = e.pageX + "px";
qiu[0].style.top  = e.pageY + "px";

使用for循环将剩下小球的位置设置为前一个小球的位置:

for (var i = 1; i< qiu.length; i++) {
    qiu[i].style.left = qiu[i - 1].offsetLeft + "px";    
    qiu[i].style.top  = qiu[i - 1].offsetTop  + "px";
}

完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #qiu div{
            width: 8px;
            height: 8px;
            background-color: red;
            border-radius: 50%;
            position: absolute;
            transition: all 0.1s;
        }
    </style>
</head>
<body>
    <div id="qiu">
        <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><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><div></div><div></div><div></div><div></div>
    </div>
    <script>
        var qiu = document.getElementById("qiu").children;
        document.onmousemove = function (e) {
            var e = e || event;
            qiu[0].style.left = e.pageX + "px";
            qiu[0].style.top  = e.pageY + "px";
            for (var i = 1; i< qiu.length; i++) {
                qiu[i].style.left = qiu[i - 1].offsetLeft + "px";    
                qiu[i].style.top  = qiu[i - 1].offsetTop  + "px";
            }
        }
    </script>
</body>
</html>

相关文章

  • JS实现一连串元素跟随鼠标效果

    思路 当鼠标移动时,获取到鼠标的位置,将第一个小球的位置设置为鼠标的位置,然后将剩余小球都设为其前一个小球的位置,...

  • JS效果 导航鼠标跟随

    吐槽时间,我这智商,就弄这些逻辑,差点就晕了。先上效果图: 由于二级导航间(就是写了“文字兄兄”的导航栏)的距离会...

  • 基于vue鼠标双击文本全选及获取光标位置

    鼠标双击文本全选 实现效果如图: vue项目如何实现: 1.HTML部分 2.js部分 input元素获取光标下标...

  • js原生拖拽的2种实现

    (1)实现在规定区域内跟随鼠标移动(鼠标事件实现) (2)拖放效果(drag事件实现) dragenter和dra...

  • Web前端------JS放大镜、拖拽、模拟滚动条

    放大镜特效,里面包含了鼠标跟随特效的实现方式 具体代码如下: 其中导入的animate.js文件内容如下: 效果展...

  • 简单轮播图(循环播放)

    效果图 原理 布局 样式 JS实现 以上就是用JS实现的自动循环轮播图,我又加上了鼠标移过停留的效果。

  • JQurey鼠标跟随及实现方案

    鼠标跟随 话不多说同样先上效果图再上代码 效果图: 1569809888816.png代码 css html js...

  • js实现放大镜

    效果图 实现原理 借助宽高等比例放大的两张图片,结合js中鼠标偏移量、元素偏移量、元素自身宽高等属性完成;左侧遮罩...

  • js 鼠标跟随

    1: offsetLeft 获取元素到左边的距离 2: document.documentEleme...

  • js实现图片跟随鼠标移动

    这次做的是和鼠标移动然后不断获取坐标相关的一个小功能。 这里视频放不了就不放了,大家可以直接复制代码运行就行 这次...

网友评论

      本文标题:JS实现一连串元素跟随鼠标效果

      本文链接:https://www.haomeiwen.com/subject/lsamdhtx.html