伪元素与伪类两者都是通过在选择器后附加一个特定的关键字来定义,遵循相似的语法规则,并在 CSS 规则块中设置相应的样式。伪元素 能够通过 content 属性添加或替换内容。例如,:before 和 :after 可以插入文本、图像或其他生成的内容。伪类 仅影响元素的样式,而不添加或修改内容。它们基于用户的交互、文档结构或其他逻辑条件来改变元素的表现。主要区别如下:
-
作用对象:
- 伪类选择器(Pseudo-classes)作用于实际存在的元素,用于描述元素的某种特定状态或关系,如链接的访问状态(
:visited
)、鼠标悬停状态(:hover
)、是否为文档中的第一个子元素(:first-child
)等。它们不直接改变元素的结构,而是影响元素在特定条件下的表现样式。 - 伪元素选择器(Pseudo-elements)则用于创建并选择元素内的某个特定部分或是在元素前后生成新的、虚拟的内容节点。例如,
:before
和:after
可以用来插入额外内容,:first-line
和:first-letter
分别选择元素首行文本和首字母,
- 伪类选择器(Pseudo-classes)作用于实际存在的元素,用于描述元素的某种特定状态或关系,如链接的访问状态(