一分钟搞懂伪类和伪元素
一分钟搞懂伪类和伪元素
YuXiang在CSS中,伪类(Pseudo-classes)和伪元素(Pseudo-elements)是两个非常强大的工具,它们允许我们为文档中某些特定的状态或部分添加样式,而无需修改HTML结构。尽管它们看起来很相似,但它们的用法和用途却截然不同。
1. 什么是伪类?
在CSS中,我们使用hover
表示该元素在鼠标悬停下的样式,类似的还有 active
、 focus
等。他们被称为伪类,伪类依附于已存在的元素。它们通常以单冒号(:
)开头,描述元素的在某种状态或特性下的样式。
伪类选择器非常多,但是大部分可能你一辈子都用不到。
常见伪类
:hover :当用户将鼠标悬停在元素上时生效。
:active :当元素被激活(如点击)时生效。
:focus :当元素获得焦点时生效。
:nth-child(n) :选择父元素的第n个子元素。
:first-child :选择父元素的第一个子元素。
:last-child :选择父元素的最后一个子元素。
:not(selector) :选择不符合指定选择器的元素。
示例
1 | /* 鼠标悬停时改变链接颜色 */ |
2. 什么是伪元素?
伪元素一般用于创建虚拟元素并定义其样式,可以快速为元素增加额外内容,它们通常以双冒号(::
)开头。
常见伪元素
::before :在元素内容之前插入内容。
::after :在元素内容之后插入内容。
::first-line :选择元素的第一行文本。
::first-letter :选择元素的第一个字母。
::selection :选择用户选中的文本部分。
示例
1 | /* 在段落前插入内容 */ |
3. 伪类与伪元素的区别
特性 | 伪类(Pseudo-classes) | 伪元素(Pseudo-elements) |
---|---|---|
定义 | 选择处于特定状态的元素 | 选择元素的某个特定部分 |
语法 | 单冒号(: ) |
双冒号(:: ) |
作用对象 | 整个元素 | 元素的一部分 |
常见用途 | 动态状态(如悬停、焦点) | 插入内容、样式化部分文本 |
示例 | :hover, :nth-child, :not | ::before, ::after, ::first-line |
4. 实际应用场景
4.1 伪类的应用
- 交互效果 :为链接、按钮等元素添加悬停、点击等交互效果。
1 | button:hover { |
- 表单验证 :为有效或无效的表单字段添加样式。
1 | input:valid { |
- 结构化选择 :选择表格的特定行或列。
1 | tr:nth-child(odd) { |
4.2 伪元素的应用
- 装饰性内容 :在元素前后插入图标或文本。
1 | blockquote::before { |
- 首字母大写 :为段落的第一个字母添加特殊样式,例如首字下沉的效果。
1 | p::first-letter { |
- 用户选中文本样式 :自定义用户选中文本的外观。
1 | ::selection { |