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

如何用纯CSS为嵌套列表中最后一个.active类的li元素设置样式?

纯CSS选中嵌套导航中最后一个.active的列表项

解决方案

由于上级父级<li>都会被添加.active类,但只有当前页面对应的最底层<li>,其后代元素中没有其他带.active类的元素。可以利用这个特性精准选中目标元素:

方法1:使用:has()伪类(推荐,现代浏览器支持)

/* 可选:给所有.active的li设置基础高亮样式 */
li.active {
  background-color: #f0f0f0;
}

/* 选中没有子.active元素的.active li(即当前页面对应的项) */
li.active:not(:has(.active)) {
  /* 这里设置专属样式,比如: */
  font-weight: bold;
  color: #e63946;
  background-color: #ffebee;
}

方法2:兼容旧版浏览器的写法

如果需要兼容不支持:has()的旧浏览器,可以通过样式覆盖实现:

/* 先给所有.active的li设置基础样式 */
li.active {
  font-weight: bold;
  color: #e63946;
}

/* 重置嵌套在.active里的.active li的样式(即上级父项) */
li.active li.active {
  font-weight: normal;
  color: inherit;
}

原理说明

  • 方法1中,:has(.active)会匹配包含子.active元素的li,not(:has(.active))则排除这些上级项,只保留最底层的、没有子.active的当前页面对应li。
  • 方法2的逻辑是先给所有.activeli加样式,再通过后代选择器覆盖上级父项的样式,最终只有最底层的目标li保留自定义样式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:50:20