导读:本期聚焦于小伙伴创作的《CSS3伪类选择器nth-of-type和nth-child有什么区别?怎么正确使用?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《CSS3伪类选择器nth-of-type和nth-child有什么区别?怎么正确使用?》有用,将其分享出去将是对创作者最好的鼓励。

在前端页面的样式开发中,我们经常需要对特定位置的同类型元素设置差异化样式,CSS3提供的nth-of-type和nth-child伪类选择器就是解决这类需求的核心工具,两者的匹配逻辑存在明显差异,使用时需要准确区分。

CSS3伪类选择器nth-of-type和nth-child有什么区别?怎么正确使用?

nth-child选择器的基本用法

nth-child选择器的匹配逻辑是:先找到当前元素的父元素,然后匹配父元素下所有子元素(不区分类型)中的第n个,再判断这个第n个元素是否符合前面指定的元素类型,符合则生效。

它的参数支持多种写法:

  • 具体的数字:比如2,表示匹配第2个子元素
  • 关键词:even表示偶数位置,odd表示奇数位置
  • 公式:比如2n表示偶数位置,2n+1表示奇数位置,n从0开始取值

下面是具体的代码示例:

/* 匹配父元素下所有子元素中的第2个,如果这个元素是p元素,就设置红色文字 */
p:nth-child(2) {
    color: red;
}

/* 匹配父元素下所有子元素中的奇数位置元素,如果是div元素就设置灰色背景 */
div:nth-child(odd) {
    background-color: #f0f0f0;
}

/* 匹配父元素下所有子元素中位置为3的倍数的元素,如果是li元素就设置加粗 */
li:nth-child(3n) {
    font-weight: bold;
}

nth-of-type选择器的基本用法

nth-of-type选择器的匹配逻辑是:先找到当前元素的父元素,然后匹配父元素下所有指定类型的子元素,再在这些同类型元素中找到第n个,直接生效,不需要再做类型判断。

它的参数写法和nth-child一致,同样支持数字、关键词、公式三种形式。

具体代码示例如下:

/* 匹配父元素下所有p元素中的第2个p元素,设置红色文字 */
p:nth-of-type(2) {
    color: red;
}

/* 匹配父元素下所有div元素中的奇数位置的div元素,设置灰色背景 */
div:nth-of-type(odd) {
    background-color: #f0f0f0;
}

/* 匹配父元素下所有li元素中位置为3的倍数的li元素,设置加粗 */
li:nth-of-type(3n) {
    font-weight: bold;
}

两者的核心区别演示

我们通过一个具体的HTML结构来对比两者的匹配差异,HTML结构如下:

<div class="container">
    <h3>标题1</h3>
    <p>第一个段落</p>
    <p>第二个段落</p>
    <span>文本1</span>
    <p>第三个段落</p>
</div>

首先使用nth-child选择器设置样式:

/* 规则1:匹配container下所有子元素的第2个,判断是否为p元素 */
.container p:nth-child(2) {
    color: red;
}

此时container的子元素顺序是:第1个是h3,第2个是p,第2个子元素刚好是p,所以第二个段落会显示红色。

再使用nth-of-type选择器设置样式:

/* 规则2:匹配container下所有p元素中的第2个p元素 */
.container p:nth-of-type(2) {
    color: blue;
}

container下的p元素有3个,第2个p元素是第二个段落,所以同样这个元素会显示蓝色,此时如果规则1和规则2同时生效,蓝色会覆盖红色。

我们修改一下规则1的参数:

/* 规则3:匹配container下所有子元素的第3个,判断是否为p元素 */
.container p:nth-child(3) {
    color: red;
}

container的第3个子元素是p(第二个段落),所以此时第二个段落会显示红色。如果我们将参数改成4:

/* 规则4:匹配container下所有子元素的第4个,判断是否为p元素 */
.container p:nth-child(4) {
    color: red;
}

container的第4个子元素是span,不是p元素,所以这条规则不会匹配到任何元素,没有任何样式生效。

使用场景总结

通过上面的演示,我们可以总结出两个选择器的适用场景:

  • 如果需要匹配父元素下所有子元素中的第n个,并且要求这个元素是特定类型,优先使用nth-child
  • 如果需要匹配父元素下相同类型元素中的第n个,不需要考虑其他类型的子元素,优先使用nth-of-type

另外需要注意,nth-child和nth-of-type都是CSS3新增的选择器,在IE8及以下版本的浏览器中不支持,如果需要兼容老旧浏览器,需要额外添加降级处理方案。

nth-of-typenth-childCSS3伪类选择器前端布局修改时间:2026-06-04 07:18:16

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。