CSS3中:nth-child和:nth-of-type的区别

382 阅读2分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

[CSS3中:nth-child和:nth-of-type的区别深入理解。 关于:nth-child和:nth-of-type的区别之前一直没太注意,经深入理解才发现里面其实暗藏玄机]

关于:nth-child和:nth-of-type的区别之前一直没太注意。最近打算深入了解一些CSS3,才发现里面其实暗藏玄机。 

:nth-child可以选择父元素下的字元素,:nth-of-type也可以。但是它们到底有什么区别呢? 

概念解释:

1、:nth-child() 选择器 :nth-child(n) 选择器匹配属于其父元素的第 N 个子元素,不论元素的类型,n 可以是数字、关键词或公式。

2、:nth-of-type(n) :nth-of-type(n) 选择器匹配属于父元素的特定类型的第 N 个子元素的每个元素,n 可以是数字、关键词或公式。

其实区别很简单::nth-of-type为什么要叫:nth-of-type?因为它是以"type"来区分的。也就是说:ele:nth-of-type(n)是指父元素下第n个ele元素, 

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

这里附上一个小例子: 
\

复制代码

代码如下:

<div> 
<ul class="parent-element"> 
<p  class="child1">zero</p> 
<li  class="child2">one</li> 
<li class="child3">two</li> 
<li  class="child4">three</li> 
<li class="child5">four</li> 
</ul> 
</div>

上面这个例子,.demo li:nth-child(2)选择的是<li>one</li>节点,而.demo li:nth-of-type(2)则选择的是<li>two</li>节点。

拓展:

odd 和 even 是可用于匹配下标是奇数或偶数的子元素的关键词,odd选择奇数 even选择偶数;

上述例子

  1. li:nth-child(odd):选择的是li的父级元素下的,奇数元素且该元素是li元素, 所以是 <li class="child3">two</li>  和 <li class="child5">four</li>  ( li:nth-child(n) n=3和 n=5).

  2. li:nth-child(even):选择的是li的父级元素下的,偶数元素且该元素是li元素 ,所以是 <li class="child2">one</li> 和 <li class="child4">three</li>  ( li:nth-child(n) n=2和 n=4 和 n=6)

  3. p:nth-of-type(odd):选择的是P的父级元素下的,奇数的P元素 ,所以是<li class="child2">one</li> 和 <li class="child4">three</li>   ( li:nth-of-type(odd) n=1和 n=3)

  4. p:nth-of-type(even):选择的是P的父级元素下的,偶数的P元素 ,所以是 <li class="child3">two</li>  和 <li class="child5">four</li>  ( li:nth-of-type(even) n=2和 n=4 )