伪类和伪元素的区别,其实很简单,从字面上就可以理解。它们有一个共同的修饰词“伪”,那么“伪”是什么意思呢?就是假的。所以,伪类就是假的类,伪元素就是假的元素,这就是在字面上它们之间的区别。
定义
伪类:
CSS3给出的定义是:
The pseudo-class concept is introduced to permit selection based on information that lies outside of the document tree or that cannot be expressed using the other simple selectors.
大致翻译过来的意思就是:伪类存在的意义是为了通过选择器,格式化DOM树以外的信息以及不能被常规CSS选择器获取到的信息。
通过上面的概念我们知道了伪类的功能有两种:
1.格式化DOM树以外的信息。比如: 标签的:link、:visited 等。这些信息不存在于DOM树中。
2.不能被常规CSS选择器获取到的信息。比如:要获取第一个子元素,我们无法用常规的CSS选择器获取,但可以通过 :first-child 来获取到。
通过上面的概念,我们就可以知道伪类与伪元素最本质的一个区别:
1、伪类其实是弥补了CSS选择器的不足,用来更方便地获取信息。
2、而伪元素本质上是创建了一个虚拟容器(元素),我们可以在其中添加内容或样式。
所以,你可以理解伪元素本质上是创建了一个虚拟容器(元素)了吧。
4.一个选择器可以同时使用多个伪类(但有的伪类会互斥);而一个选择器只能同时使用一个伪元素(未来的版本可能会支持多伪元素)。