CSS 伪类和伪元素:为你的选择器注入更多活力

devtools/2025/1/8 12:13:22/

在 CSS 中,选择器是我们定位 HTML 元素的基础。但有时,我们可能需要根据元素的状态或在元素内部的特定位置来选择元素。这时,CSS 伪类和伪元素就派上用场了。它们允许我们在不修改 HTML 结构的情况下,为选择器注入更多的活力,实现更灵活的样式控制。

什么是 CSS 伪类?

CSS 伪类用于选择处于特定状态的元素。它们以一个冒号 : 开头,后面跟着伪类名称,例如 :hover:active:focus 等。

常见的伪类:

  • :hover: 当鼠标悬停在元素上时选中该元素。
  • :active: 当元素被激活时(通常是鼠标点击或键盘按下)选中该元素。
  • :focus: 当元素获得焦点时(通常是用户点击或使用 Tab 键)选中该元素。
  • :visited: 当链接被访问过时选中该链接。
  • :link: 当链接未被访问过时选中该链接。
  • :first-child: 选中父元素的第一个子元素。
  • :last-child: 选中父元素的最后一个子元素。
  • :nth-child(n): 选中父元素的第 n 个子元素。
  • :nth-of-type(n): 选中父元素的第 n 个指定类型的子元素。
  • :not(selector): 选中不匹配指定选择器的元素。
  • :enabled: 选中启用的表单元素。
  • :disabled: 选中禁用的表单元素。
  • :checked: 选中选中的复选框或单选按钮。
  • :valid: 选中验证通过的表单元素。
  • :invalid: 选中验证失败的表单元素。

示例:

<a href="#">这是一个链接</a>
<button>这是一个按钮</button>
<ul><li>列表项 1</li><li>列表项 2</li><li>列表项 3</li>
</ul>
a:hover {color: red;
}button:active {background-color: lightblue;
}li:first-child {font-weight: bold;
}li:nth-child(2) {color: green;
}input:focus {border-color: blue;
}

在这个例子中:

  • 当鼠标悬停在链接上时,链接的颜色会变为红色。
  • 当按钮被点击时,按钮的背景颜色会变为浅蓝色。
  • 列表的第一个列表项的字体会变为粗体。
  • 列表的第二个列表项的颜色会变为绿色。
  • 当输入框获得焦点时,输入框的边框颜色会变为蓝色。

什么是 CSS 伪元素?

CSS 伪元素用于选择元素的特定部分,而不是整个元素。它们以两个冒号 :: 开头,后面跟着伪元素名称,例如 ::before::after::first-line 等。

常见的伪元素:

  • ::before: 在元素的内容之前插入内容。
  • ::after: 在元素的内容之后插入内容。
  • ::first-line: 选中元素的第一行文本。
  • ::first-letter: 选中元素的第一个字母。
  • ::selection: 选中用户选中的文本。
  • ::placeholder: 选中表单元素的占位符文本。

示例:

<p>这是一个段落。</p>
<div class="box"></div>
p::first-line {font-size: 1.2em;
}p::first-letter {font-size: 2em;color: red;
}.box::before {content: "";display: block;width: 20px;height: 20px;background-color: orange;margin-right: 10px;
}::selection {background-color: yellow;
}

在这个例子中:

  • 段落的第一行文本的字体大小会变为 1.2 倍。
  • 段落的第一个字母的字体大小会变为 2 倍,颜色会变为红色。
  • 在 .box 元素的内容之前会插入一个橙色的方块。
  • 用户选中的文本的背景颜色会变为黄色。

伪类和伪元素的区别

  • 伪类 选择的是 元素的状态,例如鼠标悬停、获得焦点等。
  • 伪元素 选择的是 元素的特定部分,例如第一行文本、内容之前或之后等。
  • 伪类使用 一个冒号 : 开头,伪元素使用 两个冒号 :: 开头(在 CSS2 中,伪元素使用一个冒号,但为了区分伪类和伪元素,CSS3 引入了两个冒号)。

伪类和伪元素的实际应用

  • 实现交互效果: 使用 :hover:active:focus 等伪类可以实现各种交互效果,如鼠标悬停时的颜色变化、按钮点击时的反馈等。
  • 美化表单: 使用 :valid:invalid:placeholder 等伪类可以美化表单,提供更好的用户体验。
  • 创建特殊布局: 使用 ::before 和 ::after 伪元素可以创建特殊的布局效果,如添加装饰性元素、实现清除浮动等。
  • 文本排版: 使用 ::first-line 和 ::first-letter 伪元素可以实现更精细的文本排版效果。

总结

CSS 伪类和伪元素是 CSS 中非常强大的工具,它们允许我们在不修改 HTML 结构的情况下,为选择器注入更多的活力,实现更灵活的样式控制。通过理解它们的概念和用法,我们可以充分利用它们来提高我们的开发效率和代码质量。

希望这篇文章能帮助你更好地理解 CSS 伪类和伪元素。如果你有任何问题或想法,欢迎在评论区留言。


http://www.ppmy.cn/devtools/148886.html

相关文章

RP2K:一个面向细粒度图像的大规模零售商品数据集

这是一种用于细粒度图像分类的新的大规模零售产品数据集。与以往专注于相对较少产品的数据集不同&#xff0c;我们收集了2000多种不同零售产品的35万张图像&#xff0c;这些图像直接在真实的零售商店的货架上拍摄。我们的数据集旨在推进零售对象识别的研究&#xff0c;该研究具…

多模态论文笔记——U-ViT(国内版DiT)

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍U-ViT的模型架构和实验细节&#xff0c;虽然没有后续的DiT在AIGC领域火爆&#xff0c;但为后来的研究奠定了基础&#xff0c;但其开创性的探索值得学习…

算法练习01

一、题目 给定一个整数数组 nums 和一个整数目标值target&#xff0c;请你在该数组 中找出 和为目标值 target 的那 两个整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同的元素。 你可以按任意顺序返回答案。…

恒功率反激式控制器 CRE6281G

CRE6281G 为高性能多模式 PWM 反激式控制器,CRE6281G特征有&#xff1a;  内置软启动功能  CRE6281G内置线电压补偿&#xff08;OCP&#xff09;  内置斜坡补偿  改善电磁干扰的智能抖频技术  超低启动电流  高杂讯抗干扰能力  多模式控制  CRE6281G恒功率输出…

极客说|微软 Phi 系列小模型和多模态小模型

作者&#xff1a;胡平 - 微软云人工智能高级专家 「极客说」 是一档专注 AI 时代开发者分享的专栏&#xff0c;我们邀请来自微软以及技术社区专家&#xff0c;带来最前沿的技术干货与实践经验。在这里&#xff0c;您将看到深度教程、最佳实践和创新解决方案。关注「极客说」&am…

期末概率论总结提纲(仅适用于本校,看文中说明)

文章目录 说明A选择题1.硬币2.两个事件的关系 与或非3.概率和为14.概率密度 均匀分布5.联合分布率求未知参数6.联合分布率求未知参数7.什么是统计量&#xff08;记忆即可&#xff09;8.矩估计量9.117页12题10.显著水平阿尔法&#xff08;背公式就完了&#xff09; 判断题11.事件…

LLM加速方法,Adapter Tuning和Prompt Tuning的区别及原理举例

LLM加速方法 目录 LLM加速方法整体结构各分支内容Adapter Tuning和Prompt Tuning的区别及原理举例一、区别二、总结整体结构 基于模型微调、基于模型压缩、基于分布式并行处理。 各分支内容 基于模型微调: 包含Adapter Tuning、Prompt Tuning、LoRA三个子类别。这些技术主要…

甘肃省乡镇界arcgis格式shp数据乡镇名称和编码下载内容测评

标题中的“甘肃省乡镇界arcgis格式shp数据乡镇名称和编码2020年最新”表明这是一份关于甘肃省乡镇行政边界的地理信息数据。这些数据以Esri公司的GIS&#xff08;地理信息系统&#xff09;软件ArcGIS所支持的SHP&#xff08;Shapefile&#xff09;格式提供&#xff0c;并且包含…