从MDN:
::
在CSS 3中引入了该符号,以便在伪类和伪元素之间建立区别。浏览器还接受:
CSS 2中引入的符号。
如果该表示法:
将始终被CSS3浏览器接受,那么我应该使用它,因为它适用于新旧浏览器吗?
还是应该将它们都:
用于旧浏览器和::
新浏览器,因为这种表示法:
不会总是被接受?
注意
:我认为我的问题不是重复项,也不是我应该对伪元素使用单冒号还是双冒号表示的重复项?因为另一个问题询问所有伪元素的单符号还是双符号;虽然我的问题只是关于CSS2中定义的伪元素,而不是CSS3中定义的新元素,因为我已经知道必须使用::
。
对于它的价值,选择器4现在明确指示1作者继续对所有伪元素( 包括CSS1和CSS2伪元素) 使用双冒号(强调我的意思):
因为CSS级别1和CSS
2级通过共享两个单冒号语法混为一谈伪元素和伪类,用户代理也必须接受级别1和2伪元素前一个冒号符号(::before
,::after
,::first- line
,和::first-letter
)。不允许任何其他伪元素使用此兼容性表示法。
但是,由于不赞成使用此语法,因此对于这些伪元素,作者应使用Level 3+双冒号语法。
这意味着, 只有 今天适当使用单冒号语法的是,如果你确实需要旧版浏览器支持-
的事项这里是IE8及以上的浏览器。如果不这样做,则应使用双冒号语法,以便与仅接受双冒号的较新的伪元素保持一致。此外,这是相当没有意义的使用单冒号语法如果,例如,你要的是不被支持IE8属性适用 无论如何 ,如border- radius
或box-shadow
,你::before
和::after
伪元素。
我想相信选择器3至少在其声明中_暗示了_这一点,即单冒号语法不适用于任何较新的伪元素,但是用黑色和白色表示这种东西永远不会伤害任何人,而且很高兴知道即将到来的标准就可以做到这一点。
另外,绝对没有理由在同一样式表(例如:before, :after { ... } ::before, ::after { ... }
)中用两种表示法编写重复规则,因为现有的浏览器都不支持新语法而不支持旧语法。
1 我说这完全意识到,在问这个问题时,它可能尚未声明这一点- 2013年5月的WD当然没有。
问题内容: 由于IE7和IE8不支持对伪元素(例如或)使用双冒号表示法,并且由于现代浏览器支持向后兼容的单冒号(例如),我应该仅使用单冒号表示法以及何时使用IE8的市场份额下降到可以忽略的水平,然后回去查找/替换我的代码库?还是我都应该同时包括: 如果我关心IE8用户(可怜的朋友),单独使用double似乎很愚蠢。 问题答案: 请勿 同时 使用逗号和逗号。兼容CSS 2.1(不支持CSS3)的用户
本文向大家介绍::before和:after中单冒号和双冒号的区别是什么,这两个伪元素有什么作用?相关面试题,主要包含被问及::before和:after中单冒号和双冒号的区别是什么,这两个伪元素有什么作用?时的应答技巧和注意事项,需要的朋友参考一下 区别: 伪元素在css1中已经存在当时用单冒号,css3时做了修订用双冒号 ::before ::after表示伪元素用来区别伪类。 作用: 在元素
问题内容: 我对了解何时可以将和伪元素应用于自动关闭标签特别感兴趣。根据W3生成的内容CSS规范,这是这些伪元素的定义: 12.1:before和:after伪元素 :作者使用 :before和:after伪元素 指定生成内容的样式和位置。顾名思义,:before和:after伪元素指定元素的文档树内容之前和之后的内容位置。“ content”属性与这些伪元素一起指定了要插入的内容。 基于此,这些
我有一个列表[z”,“1”,“3”,“x”,“y”,“00”,“x”,“y”,“4”],在这种情况下,我需要得到字符串后的第一个
问题内容: 这是一些示例输入: 我想提取代表实际类型的字符串。所以我的输出是: 这是我到目前为止使用的正则表达式(因为它是Java语言,所以进行了两次转义): 它适用于,但不适用于其他两个。我认为最好的解决方案是基本上说“在最后一个冒号之后得到所有内容”,但我不确定如何做。请注意,它还必须包含这些内容。 问题答案: 您不需要正则表达式: 只需找到最后一个,然后把所有东西都拿走。然后修剪它以删除前导
问题内容: 我有这样的字符串 我想用冒号作为分隔符,而不是双冒号。所需结果: 我正在尝试: 但我得到了错误的结果。 在此期间,我逃避,用 问题答案: 您可以继续讨论。这使用两个否定的环视(回溯和回溯),它们断言有效匹配只有一个冒号,在它之前或之后没有冒号。 解释模式: 这两种环视都是必需的,因为如果只有后向,则正则表达式引擎将匹配其中的第一个冒号(因为前一个字符不是冒号),如果只有前瞻,则第二个冒