0

0

css选择器如何只选第一个元素_通过首元素选择规则实现

P粉602998670

P粉602998670

发布时间:2026-01-29 08:33:09

|

348人浏览过

|

来源于php中文网

原创

:first-child匹配父元素下序号为1且标签类型相符的子元素;:nth-of-type(1)和:first-of-type只按同标签序次匹配,无视其他节点;属性选择器结合:not()与~可精准定位首个带特定属性的元素。

css选择器如何只选第一个元素_通过首元素选择规则实现

:first-child 选中父容器下的第一个子元素

这个伪类匹配的是「其父元素下序号为 1 的子元素」,但前提是该元素必须是对应标签类型。比如 div:first-child 只会选中那些既是 div、又恰好排在父元素第一个位置的元素。

常见误判场景:

  • 父元素第一个子是 p,后面才是 divdiv:first-child 完全不生效
  • 想选列表中第一个 li,但 ul 开头有注释或空文本节点 → 实际第一个子不是 lili:first-child 失效

实操建议:

  • 确保目标元素确实是父元素的第一个子节点(可用浏览器开发者工具检查 DOM 结构)
  • 若父元素开头有非目标标签(如 h2),改用 :nth-of-type(1) 更稳妥

:nth-of-type(1) 选中同类型中的第一个元素

它不看整体顺序,只看「同种标签在父元素中出现的次序」。比如 p:nth-of-type(1) 会选中父元素里第一个 p 标签,不管前面有没有 divspan

立即学习前端免费学习笔记(深入)”;

适用场景:

  • 文章段落中只想给第一个 p 加顶部边距
  • 表格中仅对第一列的 td 设置背景色(配合 td:nth-of-type(1)

注意点:

  • :nth-of-type 只认标签名,不认 class 或属性,.item:nth-of-type(1) 是无效写法
  • IE8 不支持,需兼容旧环境时避免使用

:first-of-type:nth-of-type(1) 的简写形式

功能完全等价,语义更直观,可读性略高。但两者编译后行为一致,选哪个纯看团队习惯。

示例对比:

XPaper Ai
XPaper Ai

AI撰写论文、开题报告生成、AI论文生成器尽在XPaper Ai论文写作辅助指导平台

下载
ul > li:first-of-type { color: red; }
ul > li:nth-of-type(1) { color: red; }

二者效果相同,都只影响第一个 li,无论前面是否有 header 或注释节点。

小提醒:

  • 不要和 :only-of-type 混淆——后者要求该类型在整个父元素中唯一存在
  • 若目标元素是动态插入的(如 JS 渲染),需确认插入时机是否影响选择器匹配

属性选择器 + :not() 组合规避干扰节点

当 HTML 结构不可控(例如 CMS 输出带冗余节点),又必须精准定位第一个目标元素时,可以换思路:先排除非目标节点,再取第一个。

例如,要选第一个带 data-role="item" 的元素:

[data-role="item"]:not([data-role="item"] ~ [data-role="item"]) { opacity: 1; }

原理是利用「兄弟选择器 ~」排除所有后面还有同类兄弟的元素,只剩第一个。

这个技巧较冷门,但适合以下情况:

  • 无法修改 HTML 结构,又不能依赖 JS
  • 需要 CSS-only 解决方案且目标有稳定属性标识
  • 其他伪类因 DOM 干扰失效时的备选路径

性能上无明显问题,但可维护性偏低,建议只在确实没别的办法时用。

真正容易被忽略的是:CSS 选择器永远基于当前 DOM 快照匹配,没有“首次渲染”或“初始状态”的概念。如果元素是异步加载或条件渲染的,得确认样式规则注入时机是否早于节点挂载。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

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

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

469

2024.01.03

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

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

13

2025.12.06

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

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

514

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

244

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

298

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

5306

2023.08.17

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

481

2023.09.01

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.04

Golang 网络安全与加密实战
Golang 网络安全与加密实战

本专题系统讲解 Golang 在网络安全与加密技术中的应用,包括对称加密与非对称加密(AES、RSA)、哈希与数字签名、JWT身份认证、SSL/TLS 安全通信、常见网络攻击防范(如SQL注入、XSS、CSRF)及其防护措施。通过实战案例,帮助学习者掌握 如何使用 Go 语言保障网络通信的安全性,保护用户数据与隐私。

2

2026.01.29

热门下载

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

精品课程

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

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.1万人学习

CSS教程
CSS教程

共754课时 | 24.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号