前不久使用伪类选择器的时候,发现有两组用法极为相似的,一组是:first-child、:last-child、:nth-child(n),另一组是:first-of-type、:last-of-type、:nth-of-type(n)。谈一谈在使用中的“诡异”,以及两组伪类选择器的区别。
以前对伪类选择器还不是很熟悉的时候,有时候会发现:first-child、:last-child“时灵时不灵”,真是急死老夫了。具体以前写的代码找不到了,找了两端差不多的学习学习:
第1个p
第2个p
第1个span第3个p
第2个span第4个p
第5个p
那么问题来了:
p:nth-child(3){color:#f00;} 这是会命中第3个p么?如果你这么认为那就错了,这条选择符就不会命中任何一个元素。
p:nth-child(4){color:#f00;} 这时你以为会命中第4个p,但其实命中的却是第3个p,因为它是第4个子元素。
针对上面出现的诡异事件,做出如下解答:
这三个伪类选择器,注意看“child”,是第几个子元素,肯定是相对于父级、相对于兄弟元素来说的,同级即可。
另外一组:
这三个伪类选择器,注意看“type”,是第几个同类型元素,不仅仅满足同级,排序数字n还要是相同的元素。
关键字odd代表奇数,even代表偶数
关键字2n+1代表奇数,2n代表偶数。自己慢慢体会