深入理解 nth-child 和 nth-of-type 的区别

ele:nth-of-type(n)  为什么叫 of-type ,就是说它是以“type”来区分的,也就是说ele:nth-of-type(n)指的是父元素下第n个ele元素。

ele:nth-child(n)      指的是父元素下第n个元素且这个元素是ele,若没有,则选择失败。

举例:

<style>
.div-parent span:nth-child(2){
color:red;
}
.div-parent span:nth-of-type(2){
color:yellow;
}
</style>

<div class="div-parent">
    <p>这是段落P</p>
    <span>这是span1</span>
    <span>这是span2</span>
</div>

结果为:

这是段落P

这是span1 这是span2

说明:

span:nth-child(2)   选择的是所有子元素中的第二个元素,这个元素必须是span 

span:nth-of-type(2)  选择的是所有的span子元素中的第二个元素。

 

如果在nth-child 和 nth-of-type前不指定标签呢?

举例:

<style>
.div-parent :nth-child(2){
color:red;
}
.div-parent :nth-of-type(2){
color:yellow;
}
</style>

<div class="div-parent">
    <p>这是段落P1</p>
    <span>这是span1</span>
    <span>这是span2</span>
    <p>这是段落P2</p>
</div>

结果为:

这是段落P1

这是span1 这是span2

这是段落P2

说明:

:nth-child(2)   不管是否指定标签,:nth-child(2)选择的都是第二个子元素,只不过如果指定了标签,那第二个元素就必须是该标签元素,否则选择失败。

:nth-of-type(2)  它选中了两个元素,分别是父级.div-parent 下第二个p标签和第二个span标签,说明,:nth-of-type(2) 选择的是各个子类型标签的第二个元素。

 

最后,我们了解一下,:nth-child(n) 和 :nth-of-type(n) 括号中的n代表什么?

说明:

上述选择器中的n,可以是数字,关键字和公式

①  数字:前面举例已经说明了, 1就是第一个  、2就是第二个

② 关键字: odd 和 even 匹配下标是奇数或偶数的子元素关键字,第一个子元素下标是1,那odd就是第1,3,5,7...个子元素

③ 公式:就是一种算数表达式,表示周期,n是从0开始计数

比如  2n,就是下标是2的倍数的子元素,其实就等同于even

比如n+2,就是下标不小于2的子元素,其实就是第2,3,4,5,6...个

 

特别说明下面这个例子:

<style>
.div-parent .item:nth-of-type(2){
color:yellow;
}
</style>

<div class="div-parent">
    <p>这是段落P1</p>
    <span>这是span1</span>
    <span class="item">这是span2</span>
</div>

结果:

这是段落P1

这是span1 这是span2

说明:

.item:nth-of-type(2) ,指的是span2,就等同于   span:nth-of-type(2)。而 .item:nth-of-type(1)是无效的,选择失败。因为span1,没有这个类.item

所以说,如果 :nth-of-type(2) 前指定的元素是类,选择的是指定类对应的标签下的第二个元素,且这个元素的类是指定类。

 

总结:

:nth-child(n)               父元素下第n个子元素

p:nth-child(n)           标签选择:父元素下第n个元素且这个元素是p标签

.div:nth-child(n)       类名选择:   父元素下第n个元素且这个元素包含类名‘div’。

 


 

:nth-of-type(n)          父元素下各个子类型标签的第n个元素

p:nth-of-type(n)       标签选择:父元素下第n个p标签。

.div:nth-of-type(n)   类名选择: 选择class="div"的所有不同类型的标签,对各个标签进行统计,分别选择第n个标签,且这第n个标签要包含类"div",否则选择失败                  

 

posted @ 2020-06-16 15:33  以深  阅读(1162)  评论(0编辑  收藏  举报
TOP