:first-child选择父元素下第一个子元素,如li:first-child选中首个li;:nth-child(n)按位置选第n个子元素,支持数字、odd、even和an+b形式;二者可组合使用实现精准控制,例如li:first-child:nth-child(odd)始终匹配首个li,而li:first-child:nth-child(2)逻辑冲突永不生效;实际应用中通过li:first-child设置黄底,li:nth-child(odd):not(:first-child)设灰底,区分视觉层次;关键在于理解其基于位置判断的机制,避免逻辑矛盾,合理组合可减少冗余class,提升语义化。

使用
:first-child和
:nth-child()可以精确选择特定位置的子元素。它们是CSS中强大的结构性伪类,结合使用能实现更灵活的选择逻辑。
理解 :first-child 的作用
:first-child选择作为其父元素第一个子元素的元素。 例如:
li:first-child会选中列表中的第一个
注意:如果第一个子元素不是目标类型,将不会匹配。
掌握 :nth-child() 的用法
:nth-child(n)可以选择父元素下的第 n 个子元素,不管其类型。 常见用法包括:
li:nth-child(2)
—— 选择第二个子元素,且该元素是li
li:nth-child(odd)
—— 选择奇数位置的li
li:nth-child(3n)
—— 每隔3个选一个
组合使用实现精准控制
你可以通过组合这两个伪类来定义更复杂的样式规则。
立即学习“前端免费学习笔记(深入)”;
比如以下场景:li:first-child:nth-child(odd)
—— 选择既是第一个又是奇数位的li
(总是第一个)li:first-child:nth-child(2)
—— 这种写法永远不生效,因为第一个不能是第二个p:nth-child(1)
等同于p:first-child
,但更强调位置
实际应用中,可以这样高亮第一个项目:
li:first-child {
background: yellow;
}
li:nth-child(odd):not(:first-child) {
background: #f0f0f0;
}
这段代码让第一个
li黄底,其余奇数项灰底,视觉层次更清晰。
基本上就这些。关键是理解它们基于“位置”而非“类型”判断,组合时注意逻辑冲突。合理使用可减少冗余class,提升结构语义化。










