css选择器nth-child和nth-of-type区别

简介: css选择器nth-child和nth-of-type区别

目录


首先


<body>
    <div id="box1">
        <em id="em1">1111</em>
    </div>
    <em id="em2">2222</em>
    <div id="box2">
        <em id="em3">3333</em>
        <em id="em4">4444</em>
    </div>
</body>

image.png

nth-child


<style>
    em:nth-child(1) {
        color: red;
    }
</style>
  1. nth-child会寻找所有em的父元素的所有子元素进行划区。
  2. em1父元素是box1这个div,它的所有子元素就一个em,圈起来。
  3. em2父元素是body,所有子元素依次是box1、em、box2。
  4. em3和em4父元素都是box2,是同一个区域,所有子元素就是两个em。

image.png

结果:

  1. 三个区域找nth-child(n)里面找第n个元素,然后检查是不是em,是的话就生效,不是就不生效
  2. n为1时,第一个区域就一个em1,生效
  3. 第二个区域第一个元素为div不是em2,失效
  4. 第三个区域第一个元素是em3,生效

image.png

如果n为2的话就是em2和em4生效了,你可以根据上面的方法推断出来吗?

nth-of-type


<style>
    em:nth-of-type(1) {
        color: red;
    }
</style>

结果:

1.还是同样的划区方法,不过,会剔除所有区域中不是em的元素,这就是区别。

2.区域1和3还是一样的,区域2剔除了box1和box2,区域里只剩下一个em2,n为1时被选中。

image.png

如果n取2时,只有em4被选中噢

nth-child如果前面不添加筛选查找元素



  1. 不推荐这么使用,筛选范围太泛了。
  2. 我们上文是使用em:nth-child(n),如果不添加em,也就是会将所有区域划分且没有限制元素是什么了,只要是第n个就添加样式。

例:

首先我们还是将内容限制在body,否则会从html整个根元素开始划分,注意中间有空格,因此查找元素不是body。

而且用body来划分,区域就是body底下所有区域,这里还是我们原来的三个区域,比较好理解。

第一个区域和第三个区域还是跟原来一样。

区别就是第二个区域第一个元素是box1,这次没有限制必须是em了,所以样式生效。

<style>
    body :nth-child(1) {
        color: red;
    }
</style>

虽然还是em1和em3变成红色,但是我们可以检查元素发现,box1也被添加上了样式:

image.png

可以回头再试试em:nth-child(n)的话会发现box1是不会被添加的。

相关文章
|
19天前
|
前端开发 JavaScript
【CSS】选择器
【CSS】选择器
|
29天前
|
前端开发
CSS3选择器
【8月更文挑战第23天】CSS3选择器。
26 1
|
30天前
|
前端开发
CSS中的层级选择器&伪类选择器和伪元素选择器
CSS中的层级选择器&伪类选择器和伪元素选择器
|
1月前
|
前端开发
HTML+CSS基础知识(2)选择器的使用、盒子模型的讲解、列表的使用
该博客文章详细介绍了HTML和CSS的基础知识,包括CSS样式的应用方式、语法规则、选择器的使用、盒子模型、内边距、外边距、元素的显示类型以及overflow属性处理溢出内容的方法,并通过代码示例和测试结果截图展示了这些知识点在网页设计中的应用。
HTML+CSS基础知识(2)选择器的使用、盒子模型的讲解、列表的使用
|
28天前
|
前端开发
css中px和em的区别
css中px和em的区别
35 0
|
30天前
|
前端开发
解锁CSS神秘面纱:深度剖析类选择器,掌握前端设计的绝密武器!
解锁CSS神秘面纱:深度剖析类选择器,掌握前端设计的绝密武器!
|
1月前
|
前端开发
css中px和em的区别
css中px和em的区别
|
1月前
|
XML 前端开发 安全
如何使用 CSS 中的 :root 伪类选择器
如何使用 CSS 中的 :root 伪类选择器
27 0
|
2月前
|
前端开发 JavaScript 算法
CSS【详解】样式选择器的优先级(含提升优先级的方法)
CSS【详解】样式选择器的优先级(含提升优先级的方法)
69 0
CSS【详解】样式选择器的优先级(含提升优先级的方法)
|
2月前
|
前端开发 JavaScript C++
CSS 【详解】样式选择器(含ID、类、标签、通配、属性、伪类、伪元素、Content属性、子代、后代、兄弟、相邻兄弟、交集、并集等选择器)
CSS 【详解】样式选择器(含ID、类、标签、通配、属性、伪类、伪元素、Content属性、子代、后代、兄弟、相邻兄弟、交集、并集等选择器)
38 0