的多余项目符号 "> 的多余项目符号 " />
本文介绍如何通过 css 精准隐藏含有子列表的 `
在嵌套无序列表(
根本原因在于:CSS 并未提供“选择拥有特定子元素的父元素”的选择器(即不存在 ul ul) 的原生支持——注::has() 在现代浏览器中已逐步支持,但兼容性需谨慎评估)。因此,不能直接给“含子 ul 的 li”设 list-style-type: none。
✅ 推荐解决方案:作用于子 本身
ul > ul {
list-style: none;
}该规则表示:所有作为 ul 直接子元素的 ul(即嵌套的第二层及更深的 ul)均取消列表样式。由于项目符号实际由 ul 元素控制(而非 li),移除子 ul 的 list-style 后,其内部
⚠️ 注意事项:
li:has(> ul) {
/* 注意:此写法目前 Safari 15.4+、Chrome 105+ 支持,Firefox 未启用 */
list-styl
e-type: none;
}✅ 总结:最简洁、兼容性最佳的做法是使用 ul > ul { list-style: none }。它直击问题本质——嵌套列表的符号冗余源于子 ul 的默认样式,而非父 li 的属性。无需 JavaScript,不依赖新特性,一行 CSS 即可优雅解决。