css3伪类选择器:nth-child() 和 :nth-of-type()

学过网页制作的同学大多对CSS中的伪类选择器有所了解,像:link,:hover,:active,:focus,:first-child,:lang想必已经非常熟悉了,今天要说的是CSS3中新增的伪类选择器,:nth-child()和 :nth-of-type()。

:nth-child()用法

:nth-child(n)选择器匹配属于其父元素的第N个子元素,不论元素类型。在w3c中说明n可以是数字、关键词或公式。常用有4种写法。

1.具体数字

:nth-child(n):匹配父元素中第n个元素,例如:li:nth-child(3){backgroud:red;},匹配父元素中第3个子元素li的背景颜色。

2.倍数

:nth-child(an):匹配父元素中第a数倍的元素,例如:li:nth-child(3n){backgroud:red;}

3.倍数分组

:nth-child(an+b)或:nth-child(an-b):先对元素进行分组,每组有a个,b为组内成员的序号,其中字母n和加(+)减(-)号不可缺省,位置不可调换,这是该写法的标志,其中a,b均为正整数或0。如3n+1,5n-1。

4.奇偶写法

:nth-child(odd)和:nth-child(even):分别匹配序号为奇数与偶数的元素。奇数(odd)与(2n+1)结果一样;偶数(even)与(2n+0)及(2n)结果一样。

:nth-of-type的用法

:nth-of-type(n)选择器匹配属于父元素的特定类型的第N个子元素的每个元素。这个用法和:nth-child(n)用法类似,不同的是:nth-child(n)所匹配的元素必须有父元素包裹着。但:nth-of-type(n)可以匹配特定类型元素行。例如:p:nth-of-type(2){background:#ff0000;}

:nth-child()和:nth-child-type()区别

:nth-child可以选择父元素下的字元素,:nth-of-type也可以。但是它们到底有什么区别呢? 其实区别很简单::nth-of-type为什么要叫:nth-of-type?因为它是以”type”来区分的。也就是说:ele:nth-of-type(n)是指父元素下第n个ele元素, 而ele:nth-child(n)是指父元素下第n个元素且这个元素为ele,若不是,则选择失败。这里附上一个小例子:

zero

  • one

  • two

上面这个例子,.demo li:nth-child(2)选择的节点是

  • one

而.demo li:nth-of-type(2)则选择的节点是

  • two

浏览器支持

所有主流浏览器均支持:nth-child()选择器,除了IE8及更早的版本。