css 想选中第 n 个同类型元素怎么办_使用 nth-of-type 选择器

夏敏大大_9750

夏敏大大_9750

2026-01-23

464人浏览

原创

:nth-of-type(n) 选中同标签类型下第n个元素,忽略非匹配标签、文本节点和注释;它按HTML标签名计数,不区分class/id/可见性,与:nth-child先定位再校验类型不同。

css 想选中第 n 个同类型元素怎么办_使用 nth-of-type 选择器

nth-of-type(n) 选中的是同标签类型下的第 n 个,不是父元素下所有子元素的第 n 个

很多人误以为 :nth-of-type(2) 会选中父容器里“第二个子元素”,实际它只看**标签名是否匹配**。比如父元素内有

、
、

,那么第二个

才是 p:nth-of-type(2),中间的
完全被跳过。

常见错误现象:div:nth-of-type(1) 没生效,其实是前面还有别的

(比如注释、隐藏元素、服务端注入的空
),或者父元素第一个子元素根本不是
。
  • 只按 HTML 标签名计数,不区分 class、id 或属性
  • 忽略文本节点、注释节点(它们不影响计数)
  • 如果目标元素前有同类型但被 display: none 的兄弟元素,它仍会被计入 —— :nth-of-type 不管可见性

想选中“父元素下第 n 个子元素中类型为 X 的那个”,用 :nth-child 而不是 :nth-of-type

当你要表达“第 3 个子元素,且它恰好是

  • ”,就得用 li:nth-child(3)。它先定位位置,再校验类型;而 :nth-of-type 是先筛选同类元素,再按顺序取第 n 个。

    示例对比:

    CSS工具箱(专业版)
    CSS工具箱(专业版)

    全功能 CSS 工程手册,覆盖性能优化、无障碍、设计系统与跨浏览器兼容。

    下载
    
    
    • A
    • B
    • C
    • D

    li:nth-of-type(2) → 选中 C(第二个

  • )
    li:nth-child(2) → 不匹配(第二个子元素是 )
    li:nth-child(3) → 选中 C(第三个子元素,且是
  • )

    nth-of-type 支持公式语法,但括号里不能写变量或 CSS 自定义属性

    :nth-of-type(2n)、:nth-of-type(3n+1) 都合法,但不能写成 :nth-of-type(var(--n)) 或 :nth-of-type(calc(2 * 3)) —— 这些在 CSS 中无效,浏览器直接忽略整条规则。

    • 公式中的 n 是从 0 开始代入的整数:0, 1, 2, 3…
    • 2n+1 等价于 odd,2n 等价于 even
    • 负数如 -n+3 表示前 3 个(n=0→3, n=1→2, n=2→1),但要注意:没有第 0 个元素,所以实际生效的是第 1/2/3 个

    兼容性没问题,但 IE8 及更早版本完全不支持

    所有现代浏览器(Chrome/Firefox/Safari/Edge)都支持 :nth-of-type,包括移动端。唯一要小心的是仍在维护的旧企业系统 —— 如果必须兼容 IE8,得用 JS 动态加 class,或改用 :first-child + 相邻兄弟选择器模拟简单情况。

    容易被忽略的地方:伪类选择器的优先级和普通类选择器一样,如果同时存在 .item:nth-of-type(1) 和 .item.active,后者会覆盖前者样式 —— 别指望 :nth-of-type 自带更高权重。

  • 前端入门到VUE实战笔记:立即使用
    在学习笔记中,你将探索 前端 的入门与实战技巧!

    相关文章

    PHP速学视频免费教程(入门到精通)
    PHP速学视频免费教程(入门到精通)

    PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

    更多
    chrome什么意思
    chrome什么意思

    chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.11

    2886

    5

    chrome无法加载插件怎么办
    chrome无法加载插件怎么办

    chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

    2023.11.06

    5839

    7

    Chrome开启无痕模式
    Chrome开启无痕模式

    本专题整合了Chrome无痕模式开启相关内容,阅读专题下面的文章了解更多详细教程。

    2026.03.24

    4167

    22

    edge是什么浏览器
    edge是什么浏览器

    Edge是一款由Microsoft开发的网页浏览器,是Windows 10操作系统中默认的浏览器,其目标是提供更快、更安全、更现代化的浏览器体验。本专题为大家提供edge浏览器相关的文章、下载、课程内容,供大家免费下载体验。

    2023.08.21

    3082

    5

    IE浏览器自动跳转EDGE如何恢复
    IE浏览器自动跳转EDGE如何恢复

    ie浏览器自动跳转edge的解决办法:1、更改默认浏览器设置;2、阻止edge浏览器的自动跳转;3、更改超链接的默认打开方式;4、禁用“快速网页查看器”;5、卸载edge浏览器;6、检查第三方插件或应用程序等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

    2024.03.05

    2894

    4

    如何解决Edge打开但没有标题的问题
    如何解决Edge打开但没有标题的问题

    若 Microsoft Edge 浏览器打开后无标题(窗口空白或标题栏缺失),可尝试以下方法解决: 重启 Edge:关闭所有窗口,重新启动浏览器。 重置窗口布局:右击任务栏 Edge 图标 → 选择「最大化」或「还原」。 禁用扩展:进入 edge://extensions 临时关闭插件测试。 重置浏览器设置:前往 edge://settings/reset 恢复默认配置。 更新或重装 Edge:检查最新版本,或通过控制面板修复

    2025.04.24

    3252

    6

    class在c语言中的意思
    class在c语言中的意思

    在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

    2024.01.03

    4336

    7

    python中class的含义
    python中class的含义

    本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

    2025.12.06

    306

    9

    js正则表达式
    js正则表达式

    php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

    2023.06.20

    4716

    8

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    Sass 教程
    Sass 教程

    共14课时 | 1.6万人学习