zoukankan      html  css  js  c++  java
  • 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>
     
     
     
  • 相关阅读:
    Git中tag标签的使用
    antd vue Layout 组件收缩展开自定义
    antd vue Popover气泡卡片的使用
    antd vue Tree树形控件的使用
    antd vue Message 全局提示的使用
    tp5.1 关联条件查询haswhere 用field限制字段失效的问题
    Chrome 调试技巧: 调整网速
    html2canvas导出图片模糊
    点击其他区域不让编辑器失去焦点
    启动的项目经常挂怎么办
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/12288657.html
Copyright © 2011-2022 走看看