首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js鼠标跟随效果

一、基础概念

在JavaScript中实现鼠标跟随效果,就是通过监听鼠标的移动事件(mousemove),根据鼠标的坐标位置来动态调整某个元素(如一个div)的位置,使其看起来像是跟随鼠标移动。

二、相关优势

  1. 用户体验增强
    • 可以吸引用户的注意力,例如在一些交互性的网页元素(如提示框、跟随的小图标等)上使用,让用户更直观地感受到与页面元素的交互。
  • 交互性提升
    • 使网页更加生动有趣,打破静态页面的单调感。

三、类型

  1. 绝对定位跟随
    • 直接根据鼠标的clientXclientY坐标来设置元素的lefttop样式属性(对于绝对定位的元素)。
  • 相对定位结合偏移的跟随
    • 在鼠标坐标的基础上添加一定的偏移量,使跟随元素与鼠标保持一定距离,并且可以相对于某个参考点进行定位。

四、应用场景

  1. 悬浮提示框
    • 当用户将鼠标悬停在某个元素上时,一个提示框可以跟随鼠标移动,方便用户查看相关信息。
  • 自定义光标效果
    • 替代默认的光标,创建独特的视觉效果,比如一个彩色的小球跟随鼠标移动。

五、示例代码(绝对定位跟随)

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF - 8">
    <meta name="viewport" content="width=device-width, initial - scale = 1.0">
    <title>Mouse Follow Effect</title>
    <style>
        #follow {
            position: absolute;
            width: 50px;
            height: 50px;
            background-color: red;
            border - radius: 50%;
        }
    </style>
</head>

<body>
    <div id="follow"></div>
    <script>
        const followElement = document.getElementById('follow');
        document.addEventListener('mousemove', function (e) {
            let mouseX = e.clientX;
            let mouseY = e.clientY;
            followElement.style.left = mouseX + 'px';
            followElement.style.top = mouseY + 'px';
        });
    </script>
</body>

</html>

六、可能遇到的问题及解决方法

  1. 元素超出视口范围
    • 原因:如果直接按照鼠标坐标设置元素位置,当鼠标靠近视口边缘时,元素可能会部分或完全超出视口。
    • 解决方法:在设置元素位置之前,需要获取视口的宽度和高度以及元素自身的宽度和高度。然后对鼠标坐标进行调整,确保元素不会超出视口。例如:
    • 解决方法:在设置元素位置之前,需要获取视口的宽度和高度以及元素自身的宽度和高度。然后对鼠标坐标进行调整,确保元素不会超出视口。例如:
  • 性能问题(在复杂页面或低性能设备上)
    • 原因:频繁触发mousemove事件可能会导致大量的重绘和回流,尤其是在事件处理函数中有复杂的计算或者操作时。
    • 解决方法
      • 使用节流(throttle)或者防抖(debounce)技术。例如,使用节流函数限制事件处理函数的调用频率:
      • 使用节流(throttle)或者防抖(debounce)技术。例如,使用节流函数限制事件处理函数的调用频率:
    • 尽量简化事件处理函数中的操作,避免不必要的DOM操作。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

CSS mask 实现鼠标跟随镂空效果

,最后实现效果是这样的: 进一步,还能实现任意形状的镂空效果: 鼠标经过的地方清晰可见,其他地方则是模糊的。...: 二、借助 CSS 变量传递鼠标位置 按照以往的经验,可能会在 js 中直接修改元素的 style 属性,类似这样 img.addEventListener('mousemove', (ev)...其实,我们只需要鼠标的坐标,在 CSS 中也能完全实现跟随的效果。 这里借助 CSS 变量,那一切就好办了!....wrap::before{ left: calc(var(--x) * 100%); top: calc(var(--y) * 100%); } 然后鼠标坐标的获取可以使用 JS 来计算.../pen/KKvEBjb 只有想不到,没有做不到 七、总结和说明 以上实现了一个鼠标跟随镂空的效果,从简单到复杂,从单一到通用,虽然借助了一点点 JS ,但是仅仅是“工具人”的角色,交互逻辑全部都由

2.5K20
  • 不可思议的纯 CSS 实现鼠标跟随效果

    直接进入正题,鼠标跟随,顾名思义,就是元素会跟随着鼠标的移动而作出相应的运动。大概类似于这样: 通常而言,CSS 负责表现,JavaScript 负责行为。...而鼠标跟随这种效果属于行为,要实现通常都需要借助 JS。 当然,本文的重点,就是介绍如何在不借助 JS 的情况下使用 CSS 来模拟实现一些鼠标跟随的行为动画效果。...原理 以上面的 Demo 为例子,要使用 CSS 实现鼠标跟随,最重要的一点就是: 如何实时监测到当前鼠标处于何处? OK,其实很多 CSS 效果,都离不开 障眼法 二字。...CSS鼠标跟随按钮效果 一开始,我在 CodePen 上看到了下面这个效果,使用了 SVG + CSS + JS 实现,我就想着,仅用 CSS,能不能 copy 一下: ?...Demo 戳我,CodePen Demo -- CSS鼠标跟随按钮效果 全屏鼠标跟随动画 OK,继续,下面来点更炫的。嗯,就是那种华而不实的。 ? 如果我们控制的不止一个元素,而是多个元素。

    4.6K10

    原生JS | 导航底部横线跟随鼠标缓动

    功能效果 功能需求明确 横向导航条; 当鼠标在导航区域当中左右移动时,横线跟随鼠标移动。...鼠标跟随特效 结构分析 与jQuery实现方法当中使用的结构有所不同,为了更好的获取标签,所以使用如下代码结构: 样式处理 样式方面与此前没有什么变化,依旧使用定位的思路来实现,此处不再重复给出样式代码...原生JS功能实现 功能代码解析 在该效果中,由于鼠标移入淡入或淡出的功能代码的原理与jQuery基本类似,所以不做重复书写,只实现导航底部跟随的效果。...逻辑(原生JS)实现相关知识 计时器; 缓冲运动; 数学对象。 计时器 通过计时器(此处使用的是setTimeout),实现在一定时间间隔之后,执行一次函数当中的功能。...数学对象 在JS当中,最小的单位为1像素,对于缓冲运动当中,所计算出的缓冲结果是存在小数的,这些小数需要计算为整数再做处理。

    7.2K81

    Canvas跟随鼠标炫彩小球

    跟随鼠标炫彩小球 canvas没有让我失望,真的很有意思 实现效果 超级炫酷 ?...实现原理 创建小球 给小球添加随机颜色,随机半径 鼠标移动通过实例化,新增小球 通过调用给原型新增的方法,来实现小球的动画效果 通过定时器不断地更新画布 实现过程 创建小球 通过创建函数收纳小球所有的样式...,再通过实例化函数,将鼠标当前的位置传递给Ball函数,让通过实例化创建出来的小球,最后将创建出来的小球存入数组中,数组中以对象形式存放着每个小球的属性和属性值 function Ball(x, y,...this.dy = parseInt(Math.random() * 10) - 5;//`-5`是让小球能向四周随机移动 ballArr.push(this);//添加小球 } //监听鼠标移动事件.../画圆,位置,半径 ctx.fillStyle = this.color;//颜色 ctx.fill(); } //监听鼠标移动事件

    1.9K40

    Canvas 动画: atan2 三角函数与鼠标跟随效果

    这个案例展示了如何使用HTML5的Canvas和JavaScript实现一个动态效果:在画布上绘制一个箭头,并让它实时跟随鼠标移动。这个小项目不仅有趣,还能帮助你理解编程和基本数学概念的实际应用。...事件监听: 我们使用JavaScript的mousemove事件监听器,实时捕捉鼠标在画布上的位置。每次鼠标移动时,事件监听器都会记录鼠标的x和y坐标,这样我们就知道鼠标在哪里了。...charset="UTF-8"> 跟随鼠标移动的箭头...arrow.draw(context); }; drawFrame(); 动画帧更新:使用requestAnimationFrame(drawFrame)来实现平滑的动画效果...这使得箭头能够实时指向鼠标的位置。 结束 这个项目演示了如何使用HTML5的Canvas和JavaScript来创建一个动态的跟随鼠标移动的箭头效果。

    10610

    使用原生JS实现鼠标点击爱心效果 !!!

    使用原生JS,实现鼠标点击爱心效果 !!! 引言: 在很多时候我们都需要实现鼠标点击出现图案或者文字这样的效果,对于用户而言,这样的体验是很极致的。其实实现起来也很简单,下面一起来学习一下吧。...文末附上完整代码,可以复制关键部分直接使用到自己的页面上 实现效果 ?...这样的效果很常用,在很多网页博客中都有使用 实现思路 首先我们需要获取到当前鼠标点击的位置 需要在当前位置生成一个标签 需要给标签添加随机的自定义内容 随机的文本颜色 添加文本的淡出效果 清除淡出的标签...js中直接操作动画帧的样式比较复杂,所以采用定时器实现相同的功能,将标签的top值逐渐减小,这样标签就会实现上升的效果 4....文字逐渐变淡效果 @keyframes remove { 100% { opacity: 0; } } 逐渐变淡的效果是通过css3动画来实现的很简单,动画是通过js来给元素绑定的

    4.9K30

    ZblogPHP模版导航栏跟随效果

    一直很喜欢导航栏下拉时跟随的效果,今天没事研究了一会,百度了一下,找到几处教程,但是还是“天兴工作室”的教程简单,所以综合一下,基本上实现了此功能,把过程下载来以备不时之需。...个人博客已经很少有继续做的啦,但是还在坚持做博客的都很注重用户体验,随着技术的提升出现了各种网页效果,很多个人的独立博客为了更好的用户阅读体验,都习惯把导航栏做成下拉跟随的效果。...按照网上的教程实现导航栏下拉固定的效果,今天李洋博客就给大家分享一种方法,代码来自天兴博客。...fadeIn();   }else{    nav.removeClass("fixednav");    $(".navTmp").fadeOut();   } })  }) 将这个js...大概讲下这个js的意思,判断下拉到一定高度的时候,给导航栏的div插入一个”fixednav“属性,然后给”fixednav“加上固定在顶部的参数。 文章转载:天兴工作室

    1.1K20
    领券