CSS3 伪类和使用场景

news2025/5/13 13:01:19

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.coloradmin.cn/o/2374674.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Shadertoy着色器移植到Three.js经验总结

Shadertoy是一个流行的在线平台&#xff0c;用于创建和分享WebGL片段着色器。里面有很多令人惊叹的画面&#xff0c;甚至3D场景。本人也移植了几个ShaderToy上的着色器。本文将详细介绍移植过程中需要注意的关键点。 1. 基本结构差异 想要移植ShaderToy的shader到three.js&am…

电脑端音乐播放器推荐:提升你的听歌体验!

在快节奏的职场环境中&#xff0c;许多上班族都喜欢用音乐为工作时光增添色彩。今天要分享的这款音乐工具&#xff0c;或许能为你的办公时光带来意想不到的惊喜。 一、软件介绍-澎湃 澎湃音乐看似是个普通的播放器&#xff0c;实则藏着强大的资源整合能力。左侧功能栏清晰陈列着…

VIC-2D 7.0 为平面样件机械试验提供全视野位移及应变数据软件

The VIC-2D系统是一个完全集成的解决方案&#xff0c;它基于优化的相关算法为平面试样的力学测试提供非接触、全场的二维位移和应变数据&#xff0c;可测量关注区域内的每个像素子集的面内位移&#xff0c;并通过多种张量选项计算全场应变。The VIC-2D 系统可测量超过 2000%变形…

一周学完计算机网络之三:1、数据链路层概述

简单的概述 数据链路层是计算机网络体系结构中的第二层&#xff0c;它在物理层提供的基本服务基础上&#xff0c;负责将数据从一个节点可靠地传输到相邻节点。可以将其想象成一个负责在两个相邻的网络设备之间进行数据 “搬运” 和 “整理” 的 “快递中转站”。 几个重要概念…

单片机-STM32部分:13-1、蜂鸣器

飞书文档https://x509p6c8to.feishu.cn/wiki/V8rpwIlYIiEuXLkUljTcXWiKnSc 一、应用场景 大部分的电子产品、家电&#xff08;风扇、空调、电水壶&#xff09;都会有蜂鸣器&#xff0c;用于提示设备的工作状态 二、原理 蜂鸣器是一种将电信号转换为声音信号的器件&#xff0…

动态IP技术赋能业务创新:解锁企业数字化转型新维度

在数字经济高速发展的今天&#xff0c;IP地址已不再是简单的网络标识符&#xff0c;而是演变为支撑企业数字化转型的核心基础设施之一。动态IP技术凭借其灵活、高效、安全的特性&#xff0c;正在重塑传统业务模式&#xff0c;催生出诸多创新应用场景。本文将深入剖析动态IP的技…

TDengine 在金融领域的应用

简介 金融行业正处于数据处理能力革新的关键时期。随着市场数据量的爆炸式增长和复杂性的日益加深&#xff0c;金融机构面临着寻找能够高效处理大规模、高频次以及多样化时序数据的大数据处理系统的迫切需求。这一选择将成为金融机构提高数据处理效率、优化交易响应时间、提高…

OSCP - Hack The Box - Sau

主要知识点 CVE-2023-27163漏洞利用systemd提权 具体步骤 执行nmap扫描&#xff0c;可以先看一下55555端口 Nmap scan report for 10.10.11.224 Host is up (0.58s latency). Not shown: 65531 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp o…

QT6 源(93)篇三:阅读与注释共用体类 QVariant 及其源代码,本类支持比较运算符 ==、!=。

&#xff08;9&#xff09; 本类支持比较运算符 、! &#xff1a; 可见&#xff0c; QString 类型里可存储多个 unicode 字符&#xff0c;即使只存储一个 unicode 字符也不等于 QChar。 &#xff08;10&#xff09;本源代码来自于头文件 qvariant . h &#xff1a; #ifndef Q…

Maven私服搭建与登录全攻略

目录 1.背景2.简介3.安装4.启动总结参考文献 1.背景 回顾下maven的构建流程&#xff0c;如果没有私服&#xff0c;我们所需的所有jar包都需要通过maven的中央仓库或者第三方的maven仓库下载到本地&#xff0c;当一个公司或者一个团队所有人都重复的从maven仓库下载jar包&#…

力扣210(拓扑排序)

210. 课程表 II - 力扣&#xff08;LeetCode&#xff09; 这是一道拓扑排序的模板题。简单来说&#xff0c;给出一个有向图&#xff0c;把这个有向图转成线性的排序就叫拓扑排序。如果有向图中有环就没有办法进行拓扑排序了。因此&#xff0c;拓扑排序也是图论中判断有向无环图…

C++ asio网络编程(5)简单异步echo服务器

上一篇文章:C asio网络编程(4)异步读写操作及注意事项 文章目录 前言一、Session类1.代码2.代码详解3.实现Session类1.构造函数2.handle_read3.介绍一下boost的封装函数和api4.handle_write 二、Server类1.代码2.代码思路详解 三、客户端四、运行截图与流程图 前言 提示&…

【机器人】复现 UniGoal 具身导航 | 通用零样本目标导航 CVPR 2025

UniGoal的提出了一个通用的零样本目标导航框架&#xff0c;能够统一处理多种类型的导航任务。 支持 对象类别导航、实例图像目标导航和文本目标导航&#xff0c;而无需针对特定任务进行训练或微调。 本文分享UniGoal复现和模型推理的过程&#xff5e; 查找沙发&#xff0c;模…

spring中的@PropertySource注解详解

一、核心功能与作用 PropertySource是Spring框架中用于加载外部配置文件的核心注解&#xff0c;主要作用是将属性文件&#xff08;如.properties、.yml&#xff09;的键值对加载到Spring的Environment环境中&#xff0c;实现配置与代码的解耦。其核心价值包括&#xff1a; 外部…

二极管钳位电路——Multisim电路仿真

目录 二极管钳位电路 2.1 二极管正向钳位电路 二极管压降测试 2.1.1 二极管正向钳位电路图 2.1.2 二极管正向钳位工作原理 2.2 二极管负向钳位电路 2.2.1 二极管负向钳位电路图 2.2.2 二极管负向钳位工作原理 二极管正向反向钳位仿真电路实验结果 2.3 二极管顶部钳位…

suricata增加单元测试编译失败

一、环境 $ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.5 LTS Release: 22.04 Codename: jammysuricata: suricata7.0.5 IDE: vscode 二、背景 在suricata中开发了某个功能后&#xff0c;增加unittest时&#xff0c;…

高并发场景下的BI架构设计:衡石分布式查询引擎与缓存分级策略

在电商大促、金融交易时段或IoT实时监控场景中&#xff0c;企业BI系统常面临瞬时万级并发查询的冲击——运营团队需要实时追踪GMV波动&#xff0c;风控部门需秒级响应欺诈检测&#xff0c;产线监控需毫秒级反馈设备状态。传统单体架构的BI系统在此类场景下极易崩溃&#xff0c;…

鱼眼摄像头(一)多平面格式 单缓冲读取图像并显示

鱼眼摄像头&#xff08;一&#xff09;多平面格式 单缓冲读取图像并显示 1.摄像头格式 1. 单平面格式&#xff08;Single Plane&#xff09;&#xff1a;各通道数据保存在同一个平面&#xff08;缓冲&#xff09;&#xff0c;图像数据按行连续存储a. mjpeg&#xff0c;yuyv等…

机器学习笔记——特征工程

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本笔记介绍机器学习中常见的特征工程方法、正则化方法和简要介绍强化学习。 文章目录 特征工程&#xff08;Fzeature Engineering&#xff09;1. 特征提取&#xff…

A Survey of Learning from Rewards:从训练到应用的全面剖析

A Survey of Learning from Rewards&#xff1a;从训练到应用的全面剖析 你知道大语言模型&#xff08;LLMs&#xff09;如何通过奖励学习变得更智能吗&#xff1f;这篇论文将带你深入探索。从克服预训练局限的新范式&#xff0c;到训练、推理各阶段的策略&#xff0c;再到广泛…