CSS3疑难问题---5、:before和::before的区别

CSS3疑难问题---5、:before和::before的区别

一、总结

一句话总结:

:before相当于是css3之前的写法,::before相当于是css3的写法,:before和::before都可以正常显示,但是推荐用::before

1、单冒号(:)和双冒号(::)在选择器中的使用场景分析?

1、css3以前的伪元素选择器,可以随意选择单冒号(:)或者双冒号(::),但是css3中的伪类选择器,只能使用双冒号(::)。
2、伪元素选择器,无论是什么版本的,都只能用单冒号(:)

2、单冒号(:)和双冒号(::)在选择器中推荐如何使用?

伪类一律用单冒号(:),伪元素一律用双冒号(::)

二、:before和::before的区别

博客对应课程的视频位置:5、:before和::before的区别

https://fanrenyi.com/video/13/71

转自或参考::before和::before的区别
https://www.cnblogs.com/1115changhao/p/10418332.html

::before 是一个伪类元素,代表生成的内容元素,表示相应元素的可抽象样式的第一个子元素,即:所选元素的第一个子元素 利用::before可以把需插入的内容插入到元素的其他内容之前,并且默认内联显示。::before需要使用content属性来指定内容的值。

区别:

单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素。伪元素和伪类之所以这么容易混淆,是因为他们的效果类似而且写法相仿,但实际上 css3 为了区分两者,已经明确规定了伪类用一个冒号来表示,而伪元素则用两个冒号来表示。但因为兼容性的问题,所以现在大部分还是统一的单冒号,但是抛开兼容性的问题,我们在书写时应该尽可能养成好习惯,区分两者。

双冒号是在当前规范中引入的,用于区分伪类和伪元素。不过浏览器需要同时支持旧的已经存 在的伪元素写法,比如:first-line、:first-letter、:before、:after等,而新的在CSS3中引入的伪元素则不允许再支持旧的单冒号的写法。

那么现在就可以完整的回答标题中的问题了,对于CSS2之前已有的伪元素,比如:before,单冒号和双冒号的写法::before作用是一样的

所以,如果你的网站只需要兼容webkit、firefox、opera等浏览器,建议对于伪元素采用双冒号的写法,如果不得不兼容IE浏览器,还是用CSS2的单冒号写法比较安全。

伪类种类

伪元素种类

 

三、课程代码

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>:before和::before的区别</title>
 6     <style>
 7         p::first-letter{
 8             color: orange;
 9             font-size: 50px;
10         }
11         p::selection{
12             background-color: red;
13         }
14         a::before{
15             content: '222';
16         }
17         a:hover{
18             color: red;
19         }
20     </style>
21 </head>
22 <body>
23 <!--
24 :before和::before都可以起作用的原因
25 单冒号(:)的写法是css3之前的伪元素选择器的写法,双冒号(::)是css3的伪元素选择器的写法
26 
27 w3c为什么要做这样的一个区别
28 是为了和伪类选择器做区别,因为伪类选择器是用单冒号(:)的写法
29 
30 在css3以前,伪类选择器和伪元素选择器都是单冒号(:)的写法
31 
32 所以在css3中,官方为了区别伪类选择器和伪元素选择器
33 就规定,伪类选择器用单冒号(:)的写法,伪元素选择器用双冒号(::)的写法
34 
35 注意:
36 css3中的伪元素选择器是不能用单冒号(:)的写法
37 
38 推荐的写法:
39 伪元素选择器一律用双冒号(::)的写法,
40 伪类选择器的话一律用单冒号的写法
41 
42 
43 -->
44 <p>
45     所以在css3中,官方为了区别伪类选择器和伪元素选择器
46     就规定,伪类选择器用单冒号(:)的写法,伪元素选择器用双冒号(::)的写法
47 </p>
48 <a href="">a标签</a>
49 </body>
50 </html>
 
 
 
原文地址:https://www.cnblogs.com/Renyi-Fan/p/12288657.html