我应该使用伪元素单或双冒号符号?我应该使用伪元素单或双冒号符号?(Should I use sing

2019-05-13 13:23发布

由于IE7和IE8不支持伪元素(如双冒号符号::after::first-letter ),由于现代浏览器都支持单冒号符号(如:after )的向后兼容性,应该我只用单冒号符号,当IE8的市场份额下降到可以忽略的水平回去找我的代码库/更换? 或者我应该包括:

.foo:after,
.foo::after { /*styles*/ }

采用双独,如果我在乎IE8用户(可怜逗人)似乎很傻。

Answer 1:

不要同时使用同一个逗号组合。 一个CSS 2.1标准(不CSS3能力)用户代理将忽略整个规则:

当用户代理无法分析选择器(即,其不是有效的CSS 2.1),它必须忽略选择器和下述声明块(如果有的话),以及。

CSS 2.1给出了一个特殊的含义在选择逗号(,)。 然而,因为如果逗号可能获得的CSS的未来更新其它含义现在还不知道,整个语句应该如果在选择任何地方的错误,即使选择的其余部分可能看起来合理的CSS 2.1忽略。

http://www.w3.org/TR/CSS2/syndata.html#rule-sets

然而,你可以使用

.foo:after { /*styles*/ }
.foo::after { /*styles*/ }

在另一方面,这比需要的更详细的; 现在,你可以用一个冒号符号坚持。



Answer 2:

从CSS3选择REC :

此::符号被当前文档以建立伪类和伪元素之间的鉴别介绍。
与现有样式表的兼容性, 用户代理也必须接受1和2在水平CSS引入伪元素前一个冒号符号 (即,:一线,:第一字母,:前和:后)。
这种兼容性是不允许在这个规范中引入的新的伪元素

看来你使用(只有)一个冒号符号为已经在CSS2.1存在的UAS必须是向后兼容的伪元素是安全的。



Answer 3:

我绝对@mddw和@FelipeAls不以为然,在问候考虑使用一个冒号“安全”的。

这个“我会使用它,即使它已过时”的心态就是为什么基于浏览器的技术是在前进,向前进展如此缓慢。

是的,我们希望保持与旧标准的兼容性。 让我们面对它,这是我们一直在讨论的手。 但是,这并不意味着你有借口在开发偷懒,忽视赞成不赞成者的现行标准。

出的目标应该是确保符合现行标准,同时支持尽可能多的传统标准成为可能。

如果伪元素使用:在CSS2和:: CSS3中,我们不应该使用一个或另一个; 我们应该同时使用。

要完全回答原来的问题问,以下是支持最新实现的CSS(第3版),同时保留2版传统支持的最合适的方法。

.foo:after {
  /* styles */
}
.foo::after {
  /* same styles as above. */
}


Answer 4:

然而,它已经成为越来越流行使用polyfills两个新的JavaScript和CSS,所以你可能只是想坚持使用较新的双冒号( :: )语法,并保持对旧版浏览器一个填充工具,只要是有必要。



Answer 5:

根据浏览器统计IE 8.0它的价值在过去一年中已经下降到不足1%在美国。

http://gs.statcounter.com/browser-version-partially-combined-market-share/desktop/united-states-of-america/#monthly-201512-201612

在2015年12月IE 8.0对市场的2.92%。 在2016年12月IE 8.0对市场的0.77%。

在下降这个速度,不会是最坏的主意,停止支持IE浏览器的旧版本,并开始使用::伪元素。



Answer 6:

包括这两种写法肯定是安全的,但我看不到任何浏览器掉落单一符号很长一段时间,所以只有一个one'll被罚款(它是有效的CSS2)。

Personnaly我只用单冒号表示,主要是由习惯。



文章来源: Should I use single or double colon notation for pseudo-elements?