HTML5如何让文字跟随鼠标移动_js结合css文字动态效果【解答】
发布时间 - 2026-01-08 00:00:00 点击率:次鼠标跟随文字的核心是监听 document 的 mousemove 事件,用 clientX/clientY 获取视口坐标,通过 transform: translate() 动态定位并设 position: fixed/absolute 和 pointer-events: none。
文字能跟随鼠标移动,核心不是靠 HTML5 新特性,而是用 mousemove 事件监听鼠标位置,再用 JavaScript 动态更新元素的 left 和 top(或 transform: translate()),配合 CSS 设置 position: fixed 或 absolute。HTML5 本身不提供“鼠标跟随”功能,但提供了更可靠的事件 API 和 CSS 合成能力。
监听 mousemove 并获取坐标
必须监听 document 或 window 的 mousemove,不能只监听某个容器——否则鼠标移出容器就停止响应。坐标要用 event.clientX 和 event.clientY,它们返回视口内坐标,不受滚动影响,比 pageX/Y 更稳定。
- 避免用
event.pageX/pageY:页面滚动时会包含 scrollTop/Left 偏移,导致文字跳动 - 节流是必须的:高频
mousemove会卡顿,建议用requestAnimationFrame或 16ms 间隔限制 - 首次触发前要初始化文字位置,否则可能闪现在左上角
用 transform: translate() 替代 left/top 定位
直接改 element.style.left 和 style.top 触发重排(reflow),性能差;而 transform: translate(x, y) 只触发重绘(repaint),且能被 GPU 加速。CSS 必须设 position: fixed(全屏跟随)或 absolute(相对父容器),并加 pointer-events: none 防止遮挡鼠标事件。
-
position: fixed适合全局悬浮文字(如提示标语) -
position: absolute需确保父容器position: relative - 务必加
pointer-events: none,否则文字会拦截后续的 click/mouseover
基础可运行示例(含防抖和 transform)
下面代码实现一个轻量、无依赖的鼠标跟随文字效果,已处理初始定位、节流和坐标偏移(让文字略偏右下,避免遮挡鼠标指针):
Hello
常见失效原因和调试点
文字不动、跳动、错位,90% 出在以下三处:
- CSS 缺少
position: fixed或absolute:元素仍在文档流中,transform不生效或表现异常 - JS 获取的是
offsetX/Y或la:这些是相对于事件目标的坐标,完全不适合跟随场景
yerX/Y - 元素被其他 CSS 覆盖(如
display: none、visibility: hidden、父级overflow: hidden) - 未加
pointer-events: none导致鼠标悬停文字时触发mouseleave,产生抖动
真正要注意的不是“怎么写”,而是坐标源是否可靠、渲染方式是否高效、交互是否被意外阻断。这三个点没理清,再炫的动画也容易在真实项目里翻车。
# css
# javascript
# java
# html
# js
# html5
# seo
# ai
# win
# 重绘
# overflow
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
Firefox Developer Edition开发者版本入口
如何在景安云服务器上绑定域名并配置虚拟主机?
Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
Laravel如何与Inertia.js和Vue/React构建现代单页应用
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
Laravel如何发送系统通知?(Notification渠道示例)
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
北京的网站制作公司有哪些,哪个视频网站最好?
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
Laravel如何从数据库删除数据_Laravel destroy和delete方法区别
Laravel如何集成Inertia.js与Vue/React?(安装配置)
网站制作免费,什么网站能看正片电影?
详解jQuery停止动画——stop()方法的使用
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
如何获取免费开源的自助建站系统源码?
phpredis提高消息队列的实时性方法(推荐)
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
Laravel策略(Policy)如何控制权限_Laravel Gates与Policies实现用户授权
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
Laravel如何使用Collections进行数据处理?(实用方法示例)
长沙企业网站制作哪家好,长沙水业集团官方网站?
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
PythonWeb开发入门教程_Flask快速构建Web应用
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
如何自定义建站之星网站的导航菜单样式?
Thinkphp 中 distinct 的用法解析
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
如何确保西部建站助手FTP传输的安全性?
如何在Tomcat中配置并部署网站项目?
Laravel怎么清理缓存_Laravel optimize clear命令详解
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤
使用spring连接及操作mongodb3.0实例
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
Laravel如何处理表单验证?(Requests代码示例)
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
微信小程序 scroll-view组件实现列表页实例代码
如何用PHP工具快速搭建高效网站?
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
详解jQuery中基本的动画方法
Laravel如何使用Blade模板引擎?(完整语法和示例)
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
php做exe能调用系统命令吗_执行cmd指令实现方式【详解】
详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
上一篇:linux 怎么增加用户
上一篇:linux 怎么增加用户


yerX/Y