伪类和伪元素的区别?
- 伪元素使用 2 个冒号,常见的有:
::before、::after、::first-line、::first-letter、::selection、::placeholder等; - 伪类使用 1 个冒号,常见的有:
:hover、:link、:active、:target、:not()、:focus等。
补充:
- 伪元素添加了一个页面中没有的元素(只是从视觉效果上添加了,不是在文档树中添加);
- 伪类是给页面中已经存在的元素添加一个"类",从而改变其状态或样式。
补充:兼容性说明:
- 历史上伪元素都用单冒号(如
:before),CSS3 规范定义双冒号::before用于区分伪元素 vs 伪类。单冒号写法浏览器依然支持,但推荐统一使用双冒号。- 伪元素可以设置
content属性,并能选中真正的"虚拟节点";伪类不行,它只能基于已有的元素状态(如 hover、focus)添加样式。



