You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CSS如何实现带.current类的元素不触发动画且保持下划线100%宽度

问题原因

核心问题是CSS选择器层级写错,导致.current类的样式完全没有命中目标元素,和你新增的文字位移动画本身无关:

  1. 装饰线的:before伪元素是绑定在<li>标签上的,你原有代码写的.snip1168 .current a:before是在找.current元素下<a>标签的伪元素,匹配不到目标
  2. 另一个规则.snip1168 .current li:after也是错误写法,.current类本身就加在<li>上,不存在嵌套的子<li>元素
  3. 你之前尝试给.current a设置100%宽度不生效,是因为伪元素的宽度是相对于最近的定位父元素(也就是<li>)计算的,给内部<a>标签设宽度不会影响伪元素尺寸。
修复方案

直接替换原有错误的选择器即可,新增/修改如下CSS代码:

/* 替换原有错误的:before选择器规则 */
.snip1168 li:hover:before,
.snip1168 li.current:before {
  opacity: 1;
  width: 100%;
}

/* 替换原有错误的:after选择器规则,不需要after效果可直接删除这段 */
.snip1168 li:hover:after,
.snip1168 li.current:after {
  max-width: 100%;
}

/* 可选:让当前选中项的文字也保持上移位置,视觉样式更统一 */
.snip1168 li.current a {
  transform: translate(0, -10px);
}
效果验证

修改后即可符合需求:

  • 普通导航项悬停时,线条从0%到100%宽度动画展开,文字同步上移
  • 带.current类的导航项默认保持100%宽度线条,不需要触发悬停动画
  • 点击切换导航项的.current类时,选中样式会自动同步到新的项

内容的提问来源于stack exchange,提问作者blue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 08:39:20