nth-child(n)和:nth-of-type(n)都是选取选择器所对应的第n个元素的意思,且起始值都为1,不是深入了解的可能不知道他们究竟有什么区别。也许你会自己写一段CSS来测试下:
1 2 3 4 5 6 7 8 |
.demo li:nth-child(2){color:#f00;} .demo li:nth-of-type(2){font-size:20px;} <ul class="demo"> <li>zero</li> <li>one</li> <li>two</li> </ul> |
但可能你会遗憾的发现,他们都选中了第二个li元素。
好了,不绕弯子了,其实他们还是有区别的,:nth-of-type为什么要叫:nth-of-type?因为它是以”type”来区分的。也就是说:ele:nth-of-type(n)是指父元素下第n个ele元素,
而ele:nth-child(n)是指父元素下第n个元素且这个元素为ele,若不是,则选择失败。之前之所以没发现区别,是ul下面都是Li元素,但如果ul下的子元素不相同,你就会发现区别治所在了
1 2 3 4 5 6 7 8 |
.demo li:nth-child(2){color:#f00;} .demo li:nth-of-type(2){font-size:20px;} <ul class="demo"> <p>zero</p> <li>one</li> <li>two</li> </ul> |
可以看出,nth-of-type(2)选择的是type为li的第二个元素,而nth-child(2)选择的是<li>one</li>,很明显,它在ul的孩子中排第二,type正好为li,所以被选中。
好了,你明白了两者的区别了吧。
发表评论