下划线需用独立元素(如span)置于导航容器内并绝对定位,通过JS监听mouseenter/mouseleave及touchstart/focus事件,结合getBoundingClientRect计算位置,配合transform和width的transition实现平滑跟随。导航栏下划线不跟鼠标,transform 用错位置了常见错误是给 a 标签直接加 hover 和 transition,结果下划线在每个链接里独立出现、无法平滑移动。真正要动的是那个"共享"的下划线元素(比如一个 span 或伪元素),它得脱离单个链接,放在导航容器里统一控制。实操建议:立即学习"前端免费学习笔记(深入)";用一个绝对定位的 span 作为下划线,初始 width: 0、left: 0监听每个 a 的 mouseenter,读取它的 offsetLeft 和 offsetWidth,再用 transform: translateX() + width 更新下划线位置尺寸必须给下划线元素加 transition: transform 0.3s ease, width 0.3s ease,只写 all 容易卡顿:hover 伪类没法跨元素联动,得靠 JS 监听CSS 的 :hover 只能影响自身或后代,不能让父容器里的另一个子元素(如下划线)响应某个 a 的悬停。想让下划线"追着鼠标跑",纯 CSS 没法做到动态定位------除非你放弃平滑过渡,改用每个 a 自带固定位置的伪元素下划线(那就不是"随鼠标移动"了)。实操建议:立即学习"前端免费学习笔记(深入)";把下划线 DOM 节点放在 nav 内部最末尾,和 a 同级用 addEventListener('mouseenter', ...) 绑定到每个 a,避免用 onmouseover(会冒泡触发多次)别忘了加 mouseleave 回退逻辑:比如移出导航时,下划线缓慢缩回中间或收起用 getBoundingClientRect() 比 offsetLeft 更可靠如果导航栏有 padding、flex 布局或 transform 缩放,offsetLeft 会算不准位置,导致下划线偏移。尤其在响应式页面里,这个坑几乎必踩。 Cleanup.pictures 智能移除图片中的物体、文本、污迹、人物或任何不想要的东西
相关推荐
IT19955 小时前
Fail2Ban 防护 MySQL 实战|登录失败 3 次,IP 封禁 24 小时夕除5 小时前
redis--IO 多路复用(select + poll)wangchunyu1147 小时前
JAVA CompletableFuture异步编程实战2501_944521599 小时前
Immer 跨端三方库仓颉适配全流程信誓旦旦的程序猿9 小时前
【Python量化实战宝典 #26】止损与回撤控制手册:移动止损、最大回撤(Python 可跑)2501_944521599 小时前
Deepmerge 跨端三方库仓颉适配全流程lzhdim9 小时前
100条常用SQL语句天河归来9 小时前
从原始消息到业务数据:三层数据架构的设计与实践Patrick在香港9 小时前
同一行 strftime,两台机器跑出两种日期2601_967987379 小时前
用Python+OpenCV+YOLO写个游戏脚本:从自动瞄准到自动采集的保姆级教程