在CSS中,:nth-child和:nth-of-type是两个伪类选择器,它们可以用于选择满足指定规则的元素,但它们之间有一些重要的区别:
-
:nth-child(n)选择父元素下的第n个子元素,无论该子元素的类型是什么。
:nth-of-type(n)选择父元素下同类型的第n个子元素。它只会匹配同类型的元素,而不管其他类型的元素。 -
:nth-child(n) 的n的值可以是一个整数,一个表达式,也可以是关键字even或odd。它可以匹配所有类型的元素,无论是 、 还是 。
而:nth-of-type(n)的n的值必须是一个整数或者是关键字even或odd,它只会匹配指定元素类型的第n个子元素。
举个例子,如果我们有如下HTML代码:
<ul> <li>第1个</li> <li>第2个</li> <li class="red">第3个</li> <li>第4个</li> <li class="red">第5个</li> </ul>
我们想选择ul元素的第三个子元素,可以使用如下两种方式:
/* 选择所有类型的第三个子元素 */ ul :nth-child(3) {} /* 选择同类型的第三个子元素 */ ul li:nth-of-type(3) {}
第一种方式将选择ul元素下的第三个子元素,无论它的类型是什么(这里将选择class为red的第三个子元素);而第二种方式只选择ul元素下的li元素中的第三个元素。因此,以上两种方式的选择结果是不同的。