如何正确使用 CSS :nth-child() 选择嵌套元素中的特定子项

本文详解 `:nth-child()` 在嵌套结构(如 `

  • `)中失效的常见原因,指出误用 `span:nth-child(1)` 导致所有 span 被匹配的根本问题,并提供基于 `li:nth-child(n)` 的精准定位方案及可维护的 sass 实现。

    CSS 的 :nth-child(n) 是一个基于父元素内兄弟节点顺序的伪类选择器,它只关心目标元素在其直接父容器中的位置索引,而非其内容或标签类型。在你的 HTML 结构中:

  • Philosophie
  • 每个 都是其父 标签下的唯一子元素(即第一个且唯一的子节点),因此 span:nth-child(1) 对所有 都成立——这正是你观察到“只有第一个规则生效”(实际是全部匹配但后定义的样式被覆盖)或视觉上未达预期效果的根本原因。

    ✅ 正确做法:将 :nth-child() 应用于具有明确序号关系的层级——即

  • 元素本身。因为