0

0

css伪类:first-child与:last-child组合复杂选择器如何书写_通过选择器组合语法优化

P粉602998670

P粉602998670

发布时间:2026-01-23 09:46:45

|

678人浏览过

|

来源于php中文网

原创

:first-child和:last-child不能直接连写以匹配唯一子元素,仅当该元素是父容器的唯一子元素时才生效;选某类型首个/末个实例须用:first-of-type/:last-of-type。

css伪类:first-child与:last-child组合复杂选择器如何书写_通过选择器组合语法优化

伪类组合时:first-child和:last-child不能直接连写

很多人尝试写 :first-child:last-child 想匹配“既是第一个又是最后一个”的唯一子元素,语法上合法,但实际效果受限于 DOM 结构——只有当该元素**恰好是父容器的唯一子元素**时才生效。更常见的情况是想选中某个特定类型元素的第一个/最后一个实例,比如“第一个

”或“最后一个
  • ”,这时必须用类型选择器前置,不能只靠伪类堆叠。

    选中某类型元素的第一个或最后一个实例要加标签名或类名

    浏览器不支持 p:first-child 这种写法去匹配“第一个 p 元素”,因为 :first-child 只判断它是不是父元素的**第一个子节点**,不管类型。正确方式是用 :first-of-type:last-of-type

    p:first-of-type {
      color: red;
    }
    li:last-of-type {
      font-weight: bold;
    }

    如果必须用 :first-child,得确保目标元素确实是父元素的第一个子节点,例如:

    .container > p:first-child {
      margin-top: 0;
    }

    这只有在 p 紧跟在 .container 开始标签后(前面无其他子元素)时才生效。

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

    嵌套结构中避免误用组合顺序导致选择失败

    伪类的位置很关键。下面这些写法含义完全不同:

    BibiGPT-哔哔终结者
    BibiGPT-哔哔终结者

    B站视频总结器-一键总结 音视频内容

    下载
    • ul li:first-child:选中每个 ul 下的**第一个 li 子元素**(常见且安全)
    • ul:first-child li:选中那些自身是其父元素**第一个子元素的 ul** 里面的全部 li
    • ul > li:first-child:和第一条等价,但限定为直接子元素,排除嵌套 li
    • li:first-child:hover:仅当该 li 是第一个子元素时才响应 hover

    容易踩的坑是把伪类放在复合选择器中间,比如 nav ul:first-child li,这其实是在找“nav 下第一个 ul 的所有 li”,而不是“nav 下每个 ul 的第一个 li”。

    兼容性与性能差异:优先用 :first-of-type 而非模拟方案

    有人用 :not(:first-child) 或兄弟选择器 + :nth-child 模拟“第一个某类型”,比如:

    li:not(li ~ li) { /* 试图选第一个 li */ }

    这种写法既难读又低效,且 IE 不支持 :not() 嵌套伪类。现代项目应直接用:

    li:first-of-type {
      border-top: 2px solid #333;
    }
    li:last-of-type {
      border-bottom: 2px solid #333;
    }

    :first-of-type:last-of-type 在所有主流浏览器中支持良好(IE9+),语义清晰,渲染性能也优于复杂否定组合。真正需要 :first-child 的场景,通常是做重置样式(如移除首项上边距),此时它本就依赖结构位置,而非类型。

    记住:伪类不是函数调用,没有“参数”概念;它们是条件断言,作用对象始终是当前选择器匹配到的那个元素本身——所以组合逻辑全看选择器主干怎么写,而不是伪类怎么排。

  • 相关专题

    更多
    css
    css

    css是层叠样式表,用来表现HTML或XML等文件样式的计算机语言,不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

    524

    2023.06.15

    css居中
    css居中

    css居中:1、通过“margin: 0 auto; text-align: center”实现水平居中;2、通过“display:flex”实现水平居中;3、通过“display:table-cell”和“margin-left”实现居中。本专题为大家提供css居中的相关的文章、下载、课程内容,供大家免费下载体验。

    267

    2023.07.27

    css如何插入图片
    css如何插入图片

    cssCSS是层叠样式表(Cascading Style Sheets)的缩写。它是一种用于描述网页或应用程序外观和样式的标记语言。CSS可以控制网页的字体、颜色、布局、大小、背景、边框等方面,使得网页的外观更加美观和易于阅读。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

    760

    2023.07.28

    css超出显示...
    css超出显示...

    在CSS中,当文本内容超出容器的宽度或高度时,可以使用省略号来表示被隐藏的文本内容。本专题为大家提供css超出显示...的相关文章,相关教程,供大家免费体验。

    539

    2023.08.01

    css字体颜色
    css字体颜色

    CSS中,字体颜色可以通过属性color来设置,用于控制文本的前景色,字体颜色在网页设计中起到很重要的作用,具有以下表现作用:1、提升可读性;2、强调重点信息;3、营造氛围和美感;4、用于呈现品牌标识或与品牌形象相符的风格。

    761

    2023.08.10

    什么是css
    什么是css

    CSS是层叠样式表(Cascading Style Sheets)的缩写,是一种用于描述网页(或其他基于 XML 的文档)样式与布局的标记语言,CSS的作用和意义如下:1、分离样式和内容;2、页面加载速度优化;3、实现响应式设计;4、确保整个网站的风格和样式保持统一。

    605

    2023.08.10

    css三角形怎么写
    css三角形怎么写

    CSS可以通过多种方式实现三角形形状,本专题为大家提供css三角形怎么写的相关教程,大家可以免费体验。

    561

    2023.08.21

    css设置文字颜色
    css设置文字颜色

    CSS(层叠样式表)可以用于设置文字颜色,这样做有以下好处和优势:1、增加网页的可视化效果;2、突出显示某些重要的信息或关键字;3、增强品牌识别度;4、提高网页的可访问性;5、引起不同的情感共鸣。

    397

    2023.08.22

    php远程文件教程合集
    php远程文件教程合集

    本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

    21

    2026.01.22

    热门下载

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

    精品课程

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

    共14课时 | 0.8万人学习

    Bootstrap 5教程
    Bootstrap 5教程

    共46课时 | 3万人学习

    CSS教程
    CSS教程

    共754课时 | 22.4万人学习

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

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