问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-04-26 23:47

我来回答

2个回答

懂视网 时间:2022-04-06 15:07

在工作中,经常会用到CSS中的选择器,选择器也分为很多种,比如:ID选择器,类选择器,标签选择器,伪类选择器等等,那今天就着重讲讲伪类选择器中的nth-child是什么意思,nth-child怎么使用,以及他与nth-of-type的不同,他们都是CSS3中的伪类选择器,而且很多人认为意思差不多,其实不然,他们还是有区别的,那接下里,就和大家聊聊CSS3 nth-of-type和nth-child的使用方法,以及他们之间的区别。

一、nth-child( ) 与 nth-of-type( )的定义与用法

nth-child(n) : 匹配父元素中的第 n 个子元素,元素类型没有限制。
nth-of-type(n) : 匹配同类型中的第n个同级兄弟元素。
n可以是一个数字,一个关键字,或者一个公式,比如:nth-child(odd) 奇数 ,nth-child(even) 偶数。

nth-child和nth-of-type的不同之处就是查找元素的方式不同。前者是查找兄弟元素中某个绝对位置的元素,后者是查找同类型元素中某个绝对位置的元素。相同之处是,两者都是找到元素之后再与前面的选择符进行匹配,这里的匹配方式是一样的。
稍微往下延伸,清楚了查找方式,那么不管前面的选择符怎么变,最后都是先查找到元素再与前面的选择符进行匹配。也就是说选择符与他们的查找方式没有关系。弄清楚这个就不会被不同的组合混淆了。

看这个定义也许还不是很清楚他们的区别,接下来我们通过代码和图片来一点点来区分。

二、举例说明 nth-of-type和nth-child的区别

1、给第一个div五个P标签,给第二个div五个H5标签,分别用nth-child(2)与nth-of-type(2),看看结果是不是一样的,都是第二个变色。

<style type="text/css">
 p:nth-child(2){color: red ;}
 h5:nth-of-type(2){color: blue;}
 </style>
 <body>
 <div>
 <p>星期一</p>
 <p>星期二</p>
 <p>星期三</p>
 <p>星期四</p>
 <p>星期五</p>
 </div>
 <div>
 <h5>段落一</h5>
 <h5>段落二</h5>
 <h5>段落三</h5>
 <h5>段落四</h5>
 <h5>段落五</h5> 
 </div>
 </body>

效果图:

nth1.jpg

2、现在我们对HTML代码做点改动,让他们出现一些不同,CSS样式不变。我们将第一个p元素和第一个h5元素改为h4,代码如下:

<div>
 <h4>星期一</h4>
 <p>星期二</p>
 <p>星期三</p>
 <p>星期四</p>
 <p>星期五</p>
 </div>
 <div>
 <h4>段落一</h4>
 <h5>段落二</h5>
 <h5>段落三</h5>
 <h5>段落四</h5>
 <h5>段落五</h5> 
 </div>

效果图:

nth2.jpg

看看,现在是不是发现nth-of-type(2)结果变了,段落3变色了。h5:nth-of-type(2)要找的是第二个h5类型的元素,也就是段落3。

3、继续改动HTML代码。我们恢复第一个p元素和第一个h5元素,将第二个p元素和第二个h5元素改为h4,样式仍保持不变,结果会怎样呢?

<div>
 <p>星期一</p>
 <h4>星期二</h4>
 <p>星期三</p>
 <p>星期四</p>
 <p>星期五</p>
 </div>
 <div>
 <h5>段落一</h5>
 <h4>段落二</h4>
 <h5>段落三</h5>
 <h5>段落四</h5>
 <h5>段落五</h5> 
 </div>

效果图:

nth3.jpg

结果可以看到nth-child没有效果,nth-of-type高亮的是段落3。

为什么会这样?

nth-child 是查找一堆兄弟元素里的第二个元素,不管那元素是什么,只要它排行第二就行。这里前一个div找到的是 <h4>星期二</h4>
,后一个div找到的是<h4>段落二</h4>。找到之后,再和前面的选择符进行匹配,如果匹配对了,那就应用样式。前面的选择符是p,也就是要求元素是p类型,但这里都是h4,不匹配,两个元素都不会应用这个样式。

nth-of-type 是在一堆兄弟元素里找到相同HTML标记类型元素中排行第二的元素。在第一个div中 <p>星期三</p>是p类型里排行第二的元素;在后一个div中<h5>段落三</h5>是h5类型里排行第二的元素。找到之后,再和前面的选择符进行匹配,如果匹配对了,那就应用样式。前面的选择符是h5, 那么只有后一个div中<h5>段落三</h5>元素应用了样式,前一个div的<h4>星期二</h4>则不会。

总结:以上详细介绍了nth-of-type和nth-child的区别,希望可以帮助到你!

热心网友 时间:2022-04-06 12:15

: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,若不是,则选择失败。 


<div> 
<ul class="demo"> 
<p>zero</p> 
<li>one</li> 
<li>two</li> 
</ul> 
</div>

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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
艾芙洛洗发水为什么不在商场销售商 艾芙洛洗发水是英国的吗 毕业生刚刚签了三方协议,想毁,怎么办 适合夫妻干的生意有哪些 新生蜜蜂多久出巢试飞 新生蜜蜂什么时候进行首次试飞? 蜜蜂几月几日出生外貌和颜色? 当脚模一定要脚趾修长吗 脚长成这样,能当脚膜吗 固话遇忙记存呼叫业务有什么特点? 什么是固话遇忙记存呼叫业务? :nth-child() 与 -nth-of-type() 的区别 世界上有没有外星人存在,如果有,在哪个星球上 快来讲一下世界上到底有没有外星人的存在? 世界上是否有外星人存在? 世界上会有外星人的存在吗 换了手机怎么找回以前在京东买洗衣机的电子发票? - 信息提示 有没有专门看动话片的网站? 推荐几个看“片”的网站给我吧! 华为荣耀20电话录音在哪里 如今人方为刀俎,我为鱼肉,何辞为?翻译 ”如今人为刀俎,我为鱼肉,何辞为”,这句话中的辞怎么翻译, 如今人方为刀俎,我为鱼肉,何辞为? 这句话是什么句式? 如果一个女人把她所有的隐私都告诉你,那说明了什么? 人为刀俎我为鱼肉下一句是什么 女性,隐私. “人为刀俎,我为鱼肉”是什么意思,出自什么典故 女人的隐私和名誉被侵犯的时候应该怎么办? 大行不顾细谨,大礼不辞小让.如今人方为刀俎,我为鱼肉,何辞为?(鸿门宴)如何翻译. 快递破损小伙无意发现美女的隐私是什么电影? css选择器中的nth-of-type(-n+3)是什么意思? nth-of-type e可以有多级吗 nth-of-type不兼容ie8怎么办 ie8 支持 css3 选择器 :nth-of-type() 的问题 css中nth-of-type怎么选中指定区域元素 nth-of-type是怎样找位置的 为什么结果那么奇怪呢?(CSS) nth-of-type怎么选取多个 怎样跳过一行nth-of-type 如何使用css属性nth css选择器中,为什么nth #autodiv .row:nth-of-type(3):hover{border: 1px solid #FFFF00;}... css怎样仅设置div元素背景透明度,而不设置div元素里面元素的透明度... li:nth-of-type 叫什么选择器,名字 css选择器nth-child(1),first-child在加入别的标签,为什么会失效?这两... css中如何用nth-child选中指定元素 #REF!什么意思 excel里#REF!和#VALUE!各表示什么意思? excel中单元格内出现#REF!,请问大家是怎么回事 电子表格里运用的公式算出总合计里出现的“#REF!”是什么意思? 柿子醋的做法?