当前位置: 首页 > news >正文

CSS3 伪类和使用场景

CSS3 伪类(Pseudo-classes)大全

CSS3 引入了许多新的伪类,以下是完整的 CSS3 伪类分类列表(包括 CSS2 的伪类):

一、结构性伪类(Structural Pseudo-classes)

这些伪类根据元素在文档树中的位置选择元素

  1. :root - 选择文档的根元素(HTML 中通常是 <html>
  2. :nth-child(n) - 选择父元素的第 n 个子元素
  3. :nth-last-child(n) - 从末尾开始计算的第 n 个子元素
  4. :nth-of-type(n) - 选择同类型的第 n 个兄弟元素
  5. :nth-last-of-type(n) - 从末尾开始计算的同类型第 n 个兄弟元素
  6. :first-child - 父元素的第一个子元素
  7. :last-child - 父元素的最后一个子元素
  8. :first-of-type - 同类型中的第一个兄弟元素
  9. :last-of-type - 同类型中的最后一个兄弟元素
  10. :only-child - 父元素中唯一的子元素
  11. :only-of-type - 父元素中唯一类型的子元素
  12. :empty - 没有子元素的元素(包括文本节点)

二、UI 状态伪类(UI State Pseudo-classes)

与用户界面状态相关

  1. :enabled - 启用的表单元素
  2. :disabled - 禁用的表单元素
  3. :checked - 被选中的单选/复选框
  4. :indeterminate - 不确定状态的复选框(如部分选中)
  5. :default - 默认选项(如提交按钮)
  6. :valid - 输入值有效的表单元素
  7. :invalid - 输入值无效的表单元素
  8. :in-range - 值在指定范围内的输入元素
  9. :out-of-range - 值超出指定范围的输入元素
  10. :required - 必填的表单元素
  11. :optional - 可选的表单元素
  12. :read-only - 只读的表单元素
  13. :read-write - 可读写的表单元素

三、用户交互伪类(User Action Pseudo-classes)

与用户交互相关

  1. :hover - 鼠标悬停时
  2. :active - 被激活时(如点击)
  3. :focus - 获得焦点时
  4. :focus-within - 子元素获得焦点时
  5. :focus-visible - 键盘操作获得焦点时(非鼠标点击)
  6. :target - URL 片段标识符指向的元素

四、语言相关伪类(Linguistic Pseudo-classes)

  1. :lang(language-code) - 基于语言属性的元素(如 <html lang="en">

五、逻辑组合伪类(Logical Combination Pseudo-classes)CSS4

  1. :not(selector) - 不匹配给定选择器的元素
  2. :is(selector-list) - 匹配列表中任一选择器的元素
  3. :where(selector-list) - 与 :is 类似,但优先级为0
  4. :has(selector) - 包含匹配选择器的子元素的元素(CSS4,部分浏览器支持)

六、其他伪类

  1. :fullscreen - 全屏显示的元素
  2. :modal - 作为模态对话框的元素
  3. :picture-in-picture - 画中画模式的元素

使用示例

/* 结构性伪类 */
li:nth-child(2n) { background: #f0f0f0; }/* UI状态伪类 */
input:invalid { border-color: red; }/* 用户交互伪类 */
button:hover { background: #ddd; }/* 逻辑组合伪类 */
div:not(.special) { opacity: 0.8; }

注意:部分伪类(特别是 CSS4 的 :has)可能需要检查浏览器兼容性。

CSS 伪元素使用场景

伪元素是 CSS 提供的强大工具,它们允许你为元素添加装饰性内容或样式特定部分,而无需修改 HTML 结构。以下是使用伪元素的典型场景:

1. 添加装饰性内容时

适用伪元素::before::after

  • 添加图标、分隔符等视觉元素
h2::before {content: "◆";margin-right: 10px;color: #ff6b6b;
}
  • 创建工具提示
.tooltip:hover::after {content: attr(data-tooltip);position: absolute;/* 其他样式 */
}

2. 处理文本特殊部分时

适用伪元素::first-letter::first-line

  • 首字下沉效果
article p::first-letter {font-size: 3em;float: left;line-height: 0.8;
}
  • 段落首行特殊样式
.intro::first-line {font-weight: bold;color: #2c3e50;
}

3. 处理表单元素时

适用伪元素::placeholder::selection

  • 自定义占位文本样式
input::placeholder {color: #95a5a6;font-style: italic;
}
  • 自定义文本选中样式
::selection {background: #f39c12;color: white;
}

4. 创建视觉效果时

  • 清除浮动(经典用法)
.clearfix::after {content: "";display: table;clear: both;
}
  • 创建纯CSS图形
.triangle {position: relative;
}
.triangle::after {content: "";position: absolute;border: 10px solid transparent;border-top-color: #3498db;
}

5. 优化列表样式时

适用伪元素::marker

  • 自定义列表标记
ul.custom-list li::marker {content: "→";color: #e74c3c;
}

6. 处理媒体元素时

适用伪元素::backdrop

  • 全屏视频的背景样式
video::backdrop {background-color: #2c3e50;
}

何时应该避免使用伪元素?

  1. 关键功能内容:伪元素生成的内容不会被屏幕阅读器读取,也不属于DOM
  2. 需要交互的元素:伪元素不能被JavaScript直接操作
  3. 过度复杂的设计:当HTML结构能更清晰地表达内容时

最佳实践

  1. 语义优先:先用HTML表达内容结构,再用伪元素添加装饰
  2. 适度使用:避免过度依赖伪元素导致样式难以维护
  3. 浏览器兼容性:检查目标浏览器的支持情况
  4. 性能考虑:大量使用伪元素可能影响渲染性能
http://www.xdnf.cn/news/409339.html

相关文章:

  • Matlab 列车纵向滑模二阶自抗扰算法和PID对比
  • 2025爬虫实战技巧:高效数据采集方案
  • 云境天合土壤含水量监测仪器—查看土壤水分数据,掌握土壤墒情变化
  • Java 语法基础(笔记)
  • 如何查看项目是否支持最新 Android 16K Page Size 一文汇总
  • React中的useSyncExternalStore使用
  • 面向对象的js
  • 短视频兴趣算法的实现原理与技术架构
  • Linux512 ssh免密登录 ssh配置回顾
  • 写项目遇到的通用问题
  • Windows 安装 Milvus
  • 论坛项目测试
  • Matlab 模糊pid控制的永磁同步电机PMSM
  • 前端面经 计网 http和https区别
  • ​Spring Boot 配置文件敏感信息加密:Jasypt 实战
  • 国产密码新时代!华测国密 SSL 证书解锁安全新高度
  • 开疆智能canopen转Profinet网关连接AGV磁钉读头配置案例
  • HTTP2
  • Java中实现定时器的常见方式
  • C 语 言 - - - 简 易 通 讯 录
  • 网页Web端无人机直播RTSP视频流,无需服务器转码,延迟300毫秒
  • 致远OA人事标准模块功能简介【附应用包百度网盘下载地址,官方售价4W】
  • OpenCV直方图与直方图均衡化
  • Unity动画系统使用整理 --- Playable
  • python标准库--collections - 高性能数据结构在算法比赛的应用
  • LVGL(线条控件lv_line)
  • CentOS 和 RHEL
  • FPGA----基于ZYNQ 7020实现定制化的EPICS程序开发
  • AI Agent开发第64课-DIFY和企业现有系统结合实现高可配置的智能零售AI Agent
  • 智能外呼系统的实用性