伪元素和伪类的区别总结

其中伪类和伪元素的根本区别在于:它们是否创造了新的元素。

伪元素/伪对象:不存在在DOM文档中,是虚拟的元素,是创建新元素。代表某个元素的子元素,这个子元素虽然在逻辑上存在,但却并不实际存在于文档树中。

伪元素选择符
伪元素和伪类的区别总结_第1张图片
伪类:存在DOM文档中,逻辑上存在但在文档树中却无须标识的“幽灵”分类。

伪类选择符

伪元素和伪类的区别总结_第2张图片
再看看W3C中对于二者应用的描述:

伪类:用于向某些选择器添加特殊的效果
伪元素:用于将特殊的效果添加到某些选择器
其实根本意思就是就是对那些不能通过class、id等选择元素的补充

举个栗子:

伪元素和伪类的区别总结_第3张图片
如果我们想要第一个p标签字体颜色变红怎么做呢 使用伪类就会很简单:

在这里插入图片描述
但是如果不用伪类我们怎么做呢? 这时我们就需要为第一个p标签添加一个类class

伪元素和伪类的区别总结_第4张图片
可以实现同样的效果,但是需要多写一个类

如果使用伪元素该如何实现上述操作呢?

伪元素和伪类的区别总结_第5张图片
如果不用伪元素我们怎么做呢?

伪元素和伪类的区别总结_第6张图片
可以看出二者区别了,
伪类的效果可以通过添加实际的类来实现
伪元素的效果可以通过添加实际的元素来实现
所以它们的本质区别就是是否抽象创造了新元素

注意:
伪类只能使用“:”
而伪元素既可以使用“:”,也可以使用“::”
因为伪类是类似于添加类所以可以是多个,而伪元素在一个选择器中只能出现一次,并且只能出现在末尾

相关问题
:after/::after和:before/::before的异同
相同点

都可以用来表示伪类对象,用来设置对象前的内容
:before和::before写法是等效的; :after和::after写法是等效的
不同点

:before/:after是Css2的写法,::before/::after是Css3的写法
:before/:after 的兼容性要比::before/::after好 ,
不过在H5开发中建议使用::before/::after比较好
注意:

伪对象要配合content属性一起使用
伪对象不会出现在DOM中,所以不能通过js来操作,仅仅是在 CSS 渲染层加入
伪对象的特效通常要使用:hover伪类样式来激活
eg:当鼠标移在span上时,span前插入”duang”

伪元素和伪类的区别总结_第7张图片

你可能感兴趣的:(伪元素和伪类的区别总结)