:nth-child 伪类通过公式 an+b 或 odd/even 精确选择父元素下指定位置的子元素,常用于周期性样式控制,如隔行变色;需注意其基于所有子元素计数,不区分标签类型,若需按类型排序应使用 :nth-of-type。

在 CSS 中,:nth-child 是一个非常实用的伪类选择器,用于选中父元素下的第几个子元素。它可以根据公式或关键词来选择特定位置的子元素,而不管其标签类型。
基本语法
:nth-child(an + b) 是它的核心形式,其中:
- a 表示循环周期(可为正、负或零)
- b 是偏移值(从1开始计数)
- n 是一个从0开始递增的变量(0, 1, 2, ...)
也可以使用常见关键词如 odd(奇数)和 even(偶数)。
选择单个特定子元素
如果想选中某个具体位置的子元素,比如第3个:
立即学习“前端免费学习笔记(深入)”;
div:nth-child(3) { color: red; }
这会选中作为父元素第3个子元素的所有 div 元素。
选择奇数或偶数位置的子元素
常用于表格隔行变色:
- :nth-child(odd) 选中奇数位子元素(1, 3, 5...)
- :nth-child(even) 选中偶数位子元素(2, 4, 6...)
tr:nth-child(even) { background-color: #f2f2f2; }
按公式选择周期性元素
例如,每第4个元素选中一次:
li:nth-child(4n) { font-weight: bold; }
匹配第4、8、12……个 li 元素。
又比如,从第2个开始,每隔3个选一次:
p:nth-child(3n + 2) { color: blue; }
匹配位置:2, 5, 8, 11……
注意事项
:nth-child 是基于父容器中所有子元素的位置来计算的,不区分类型。如果你只想按同类型元素排序,应使用 :nth-of-type。
例如:
div span:nth-child(2)
表示 div 下的第2个子元素,且该元素是 span;而
div span:nth-of-type(2)
表示 div 下第2个 span 元素,即使它在整体子元素中排第5位。
基本上就这些。掌握 :nth-child 的公式逻辑,就能灵活控制页面中任意位置的子元素样式。不复杂但容易忽略细节。










