欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 使用CSS变量和JavaScript实现鼠标跟随渐变

使用CSS变量和JavaScript实现鼠标跟随渐变

2025/4/20 5:17:36 来源:https://blog.csdn.net/m0_74154295/article/details/144461288  浏览:    关键词:使用CSS变量和JavaScript实现鼠标跟随渐变

实现鼠标跟随渐变效果的详细过程:

1. HTML 结构

我们在 HTML 中创建了一个 <div> 元素,用于展示渐变效果。这个元素的 ID 是 gradient-box,方便在 JavaScript 中进行操作。

2. CSS 样式

  • CSS 变量:在 :root 中定义了两个 CSS 变量 --mouse-x--mouse-y,用于存储鼠标位置的百分比值。这些变量会被用于控制渐变的中心位置。
  • 渐变背景div 元素的背景设置为径向渐变(radial-gradient),其中心位置由 --mouse-x--mouse-y 控制。初始值为 50%,即居中显示。

3. JavaScript 逻辑

  • 事件监听:为 div 元素添加 mousemove 事件监听器。当鼠标在 div 上移动时,会触发 updateMousePosition 函数。
  • 计算鼠标位置
    • 使用 getBoundingClientRect() 获取 div 元素的边界信息。
    • 计算鼠标在 div 内的相对位置,并将其转换为百分比值。
  • 更新 CSS 变量
    • 使用 style.setProperty() 方法,将计算得到的百分比值更新到 --mouse-x--mouse-y 变量上。
    • 由于这些变量直接影响 div 的背景渐变,因此每次鼠标移动时,渐变的中心位置都会实时更新。

4. 整体效果

通过上述步骤,div 元素的背景渐变会根据鼠标在其上的位置动态变化,形成一个跟随鼠标移动的视觉效果。这种实现方式利用了 CSS 变量的动态特性和 JavaScript 的事件处理能力,使得效果流畅且易于维护。

请添加图片描述

代码如下

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>:root {--mouse-x: 50%;--mouse-y: 50%;}div {width: 1200px;height: 1200px;cursor: pointer;border: 1px solid #6794ee;background: radial-gradient(circle at var(--mouse-x) var(--mouse-y),rgba(10, 34, 243, 0.5),rgba(255, 0, 0, 0.2));}</style>
</head>
<body><div id="gradient-box"></div><script>// 修正函数定义function updateMousePosition(event) {const rect = event.currentTarget.getBoundingClientRect();const mouseX = ((event.clientX - rect.left) / rect.width) * 100;const mouseY = ((event.clientY - rect.top) / rect.height) * 100;document.documentElement.style.setProperty('--mouse-x', `${mouseX}%`);document.documentElement.style.setProperty('--mouse-y', `${mouseY}%`);}// 添加事件监听const gradientBox = document.getElementById('gradient-box');gradientBox.addEventListener('mousemove', updateMousePosition);</script>
</body>
</html>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词