该用 :nth-of-type 而非 :nth-child 当需按同类型标签计数时;:nth-child 依赖子元素全局序号,含注释、文本节点等,易因结构不纯失效,而 :nth-of-type 只统计指定标签的顺序。

什么时候该用 :nth-child 而不是 :nth-of-type
关键区别在于计数逻辑: 常见误用场景:想给列表中第 2 个 最常踩的坑:在 :nth-child(n) 看的是父元素下所有子元素的**位置序号**,不管标签名;而 :nth-of-type(n) 只统计**同类型标签**的位置。比如一个 、、,那么第二个 是第 3 个子元素,但它是 p:nth-of-type(2),不是 p:nth-child(2)。 加样式,但父容器开头有注释节点或其它非 元素,这时 li:nth-child(2) 会失效——因为第 2 个子元素根本不是 。此时应改用 li:nth-of-type(2) 或确保结构干净。
:nth-child(2n) 选偶数位子元素(第 2、4、6…个):nth-child(2n+1) 选奇数位(等价于 :nth-child(odd)):nth-child(3n+1) 从第 1 个开始,每 3 个取 1 个(即 1、4、7…)
:last-child 的真实匹配条件和典型失效原因:last-child 只有当目标元素**恰好是父元素的最后一个子节点**时才生效。它不关心标签名,也不管前面有多少同类元素。 末尾加了










