CSS 伪类选择器

伪类选择器(pseudo-class selector)是一种用于选择HTML元素特定状态或特征的关键字,它允许开发者基于文档树之外的信息(如用户交互、元素位置或状态变化)来选择元素并应用样式。

伪类选择器以冒号(:)开头,附加在基本选择器后面,用于定义元素的特殊状态。


伪类选择器分类及用法

1. 状态伪类(链接和用户操作)

/* 未访问的链接 */
a:link {color: blue;
}/* 已访问的链接 */
a:visited {color: purple;
}/* 鼠标悬停状态 */
a:hover {color: red;text-decoration: underline;
}/* 激活状态(鼠标按下未释放) */
a:active {color: green;
}/* 获取焦点的元素 */
input:focus {outline: 2px solid orange;
}

2. 结构伪类(基于文档结构)

/* 选择第一个子元素 */
li:first-child {font-weight: bold;
}/* 选择最后一个子元素 */
li:last-child {border-bottom: none;
}/* 选择第n个子元素 */
li:nth-child(2) {color: red;
}/* 选择奇数元素 */
tr:nth-child(odd) {background-color: #f2f2f2;
}/* 选择偶数元素 */
tr:nth-child(even) {background-color: #e6e6e6;
}/* 选择特定公式的元素 */
li:nth-child(3n+1) {margin-left: 0;
}/* 选择倒数第n个子元素 */
li:nth-last-child(2) {font-style: italic;
}/* 选择唯一子元素 */
div:only-child {padding: 10px;
}/* 选择第一个同类元素 */
p:first-of-type {font-size: 1.2em;
}/* 选择最后一个同类元素 */
p:last-of-type {margin-bottom: 0;
}/* 选择第n个同类元素 */
p:nth-of-type(2n) {background: #f8f8f8;
}/* 选择唯一同类元素 */
img:only-of-type {border: 3px solid black;
}

3. 表单相关伪类

/* 启用状态的元素 */
input:enabled {border: 1px solid #ccc;
}/* 禁用状态的元素 */
input:disabled {background-color: #f0f0f0;color: #999;
}/* 被选中的复选框或单选按钮 */
input:checked {outline: 2px solid blue;
}/* 必填字段 */
input:required {border-left: 3px solid red;
}/* 可选字段 */
input:optional {border-left: 3px solid #ccc;
}/* 有效输入 */
input:valid {border-color: green;
}/* 无效输入 */
input:invalid {border-color: red;
}/* 在范围之内 */
input:in-range {color: green;
}/* 超出范围 */
input:out-of-range {color: red;
}/* 只读元素 */
input:read-only {background-color: #f5f5f5;
}/* 可读可写元素 */
input:read-write {background-color: white;
}

4. 其他伪类

/* 否定选择器 */
div:not(.special) {opacity: 0.8;
}/* 根元素 */
:root {--main-color: #4d9fff;
}/* 空元素 */
div:empty {display: none;
}/* 目标元素(当前活动的锚点目标) */
:target {background-color: yellow;
}/* 选择包含指定文本的元素 */
p:contains("重要") {font-weight: bold;
}/* 语言选择器 */
html:lang(zh) {font-family: "Microsoft YaHei", sans-serif;
}

5. CSS3新增的伪类(部分)

/* 选择未选中的单选按钮或复选框 */
input:indeterminate {opacity: 0.5;
}/* 选择默认选项 */
option:default {font-weight: bold;
}/* 全屏模式下的元素 */
video:fullscreen {width: 100%;height: auto;
}/* 匹配正在播放的媒体元素 */
video:playing {border: 2px solid green;
}/* 匹配暂停状态的媒体元素 */
video:paused {border: 2px solid #ccc;
}

使用技巧

  1. 组合使用:伪类可以与其他选择器组合使用

    form input:focus:invalid {border-color: red;
    }
  2. 性能考虑:结构伪类(如nth-child)可能影响页面渲染性能,尤其在大型DOM中

  3. 浏览器兼容性:较新的伪类(如:focus-within)需要检查浏览器支持情况

  4. 优先级:伪类与类选择器具有相同的特异性权重(0,1,0)

注意事项

  • 某些伪类(如:visited)由于安全原因,样式受到浏览器限制

  • 结构伪类是基于元素在父元素中的位置,而不是在整个文档中的位置

  • 伪类顺序很重要,特别是对于链接状态(LoVe-HAte顺序::link, :visited, :hover, :active)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/96693.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/96693.shtml

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

相关文章

Electron 新特性:2025 版本更新解读

引言:Electron 新特性在 2025 版本更新中的解读核心价值与必要性 在 Electron 框架的持续演进中,新特性的引入是推动桌面开发创新的核心动力,特别是 2025 年的版本更新,更是 Electron 项目从成熟生态到前沿技术的跃进之钥。它不仅…

MyBatis从入门到面试:掌握持久层框架的精髓

MyBatis从入门到面试:掌握持久层框架的精髓 前言 在Java企业级应用开发中,持久层框架的选择至关重要。MyBatis作为一款优秀的半自动化ORM框架,以其灵活的SQL定制能力和良好的性能表现,成为了众多开发者的首选。本文将带你从MyBa…

5.Three.js 学习(基础+实践)

Three.js 是 “WebGL 的封装库”,帮你屏蔽了底层的着色器 / 缓冲区细节,专注于 “3D 场景搭建”,开发效率高,是通用 3D 开发的首选。他的核心是 “场景 - 相机 - 渲染器” 的联动逻辑,先掌握基础组件,再学进…

消火栓设备工程量计算 -【图形识别】秒计量

消火栓设备工程量计算 -【图形识别】秒计量 消防系统的消火栓设备水枪、水带和消火栓组成,根据清单定额规则计算消火栓设备工程量。通过CAD快速看图的图形识别框选图纸就能自动数出消火栓数量,省时又准确,是工程人做消防算量的好帮手。 一、…

Docker 与 VSCode 远程容器连接问题深度排查与解决指南

Docker 与 VSCode 远程容器连接问题深度排查与解决指南 引言 Visual Studio Code 的 Remote - Containers 扩展极大地提升了开发体验,它将开发环境容器化,保证了环境的一致性,并允许开发者像在本地一样在容器内进行编码、调试和运行。然而&…

爱图表:镝数科技推出的智能数据可视化平台

本文转载自:https://www.hello123.com/aitubiao ** 一、✨ AI 图表:智能数据可视化好帮手 爱图表是镝数科技旗下的一款智能数据可视化工具,它能让复杂的数字和报表变得直观又好懂。接入了先进的DeepSeek 系列 AI 模型,它不仅会做…

ENVI系列教程(四)——图像几何校正

目录 1 概述 1.1 控制点选择方式 1.2 几何校正模型 1.3 控制点的预测与误差计算 2 详细操作步骤 2.1 扫描地形图的几何校正 2.1.1 第一步:打开并显示图像文件 2.1.2 第二步:启动几何校正模块 2.2 Landsat5 影像几何校正 2.2.1 第一步:打开并显示图像文件 2.2.2 第…

STM32-FreeRTOS操作系统-消息队列

引言在嵌入式开发领域,STM32与FreeRTOS的结合应用极为广泛。本文将探讨如何在STM32上使用FreeRTOS实现消息队列功能,助力高效任务通信与系统协作。消息队列定义消息队列是一种在 FreeRTOS 中用于任务间通信的机制。它允许任务将消息发送到队列中&#xf…

【开题答辩全过程】以 C语言程序设计课程网站为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

手机上有哪些比较好用的待办事项提醒工具

在快节奏的现代工作中,我们每天都要面对大量的任务与事务。从项目截止日期、客户会议,到日常的工作安排,琐碎的事项容易让人顾此失彼。 手机待办事项工具早已突破传统“记事本”的局限,成为移动办公场景下的效率核心。它们通过任务…

Mysql数据库事务全解析:概念、操作与隔离级别

MySQL系列 文章目录MySQL系列一、什么是事务1.1事务的核心概念1.2、 事务的四大属性(ACID)1.2.1 原子性(Atomicity)1.2.2 一致性(Consistency)1.2.3 隔离性(Isolation)1.2.4 持久性&…

【MCU EEPROM开发教程】

简单来说把eeprom芯片当成一个传感器来使用,通过IIC/SPI等协议对芯片进行读写操作,具体的读写操作涉及到一些算法—怎么样读写更加快速,以及一些异常错误处理。 应用场景: 对于一些掉电也不能丢失的数据要存在eeprom/flash中&…

Docker将镜像搬移到其他服务上的方法

导出/加载镜像(保留分层、标签)和导出/导入容器快照(仅文件系统,丢失镜像历史与标签)。 一、把镜像打包带走(推荐) 适合把一个或多个镜像搬到离线/内网机器,保留分层与标签。 在源服…

Ubuntu 系统安装 Miniconda 完整方法与注意事项

一、完整安装步骤 1. 下载 Miniconda 安装包 Miniconda 安装包为 .sh 格式脚本,下载途径分两种: 方式 1:浏览器下载(适合新手) 访问 Miniconda 官方下载页,选择对应系统版本(Ubuntu 选 Miniconda3-latest-Linux-x86_64.sh),默认保存到用户目录的 ~/Downloads 文件夹…

【后端】数据库四大范式详细解析

梳理一下 MySQL(或关系型数据库)中的第一、二、三、四范式,这是数据库设计中非常重要的规范化理论。1️⃣ 第一范式 (1NF:First Normal Form)定义:字段具有原子性,不可再分。数据表中每一列都必须是不可分割…

HarmonyOS后台任务调度:JobScheduler与WorkManager实战指南

本文将深入探讨HarmonyOS 5(API 12)中的后台任务调度机制,重点讲解JobScheduler和WorkManager的使用方法、适用场景及最佳实践,帮助开发者实现高效、智能的后台任务管理。 1. 后台任务调度概述 HarmonyOS提供了两种主要的后台任务…

Prompt工程实践

你在写prompt时候,是不是总觉得大模型它不听话。要么答非所问、要么一堆废话。扒开思考过程仔细阅读时而觉得它聪明绝顶,时而又觉得它愚蠢至极。明明已经对了怎么又推理到错的地方去了,明明在提示词中提醒过了不要这么思考它怎么就瞎想了。这…

基于springboot的毕业旅游一站式定制系统

博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实…

输入1.8V~5.5V 输出28V DCDC升压芯片TLV61046A

今天来一款TI的升压芯片TLV61046A。输入电压范围1.8V~5.5V。最高可以输出28V。开关电流980mA,那具体能输出多大的电流就得看输入输出的电压了。以上面的输入3.6V输出12V为例,效率是85%,那最高可以输出的电流就差不多只有200mA左右。封装也是非…

ubuntu22.04源码安装ffmpeg-4.4

# ubuntu22.04源码安装ffmpeg-4.4cd /tmpwget https://ffmpeg.org/releases/ffmpeg-4.4.6.tar.xztar -xvf ffmpeg-4.4.6.tar.xzcd ffmpeg-4.4.6apt updateapt install -y yasm pkg-config libx264-dev libx265-dev libvpx-dev libfdk-aac-dev libmp3lame-dev libopus-dev libav…