2

为什么我们不能像..那样对 CSS 进行分组

p::selection , p::-moz-selection 
{background:transparent;}

演示:http: //jsfiddle.net/l2aelba/MRyVC/1/

为什么我们要一一选择喜欢

p::selection       {background:transparent;}
p::-moz-selection  {background:transparent;}

演示:http: //jsfiddle.net/l2aelba/MRyVC/

有人可以扩展这个问题吗?

4

1 回答 1

6

如果选择器的任何部分无效,浏览器应该删除整个规则:

选择器(另见选择器部分)由直到(但不包括)第一个左花括号 ({) 的所有内容组成。选择器总是与声明块一起使用。当用户代理无法解析选择器(即,它不是有效的 CSS 2.1)时,它也必须忽略选择器和以下声明块(如果有)。

CSS 2.1 为选择器中的逗号 (,) 赋予了特殊含义。然而,由于不知道逗号在未来的 CSS 更新中是否会获得其他含义,因此如果选择器中的任何地方出现错误,则应该忽略整个语句,即使选择器的其余部分在 CSS 2.1 中看起来是合理的。

(请注意,就浏览器而言,“有效的 CSS 2.1”实际上意味着“浏览器可以理解和支持的选择器”。)

由于非 Mozilla 浏览器不理解::-moz-selection,他们不得不放弃该规则。由于 Mozilla 浏览器不理解::selection,因此它们也必须放弃该规则。这是一个双输的情况(也是前缀笨拙的另一个原因,尤其是在选择器中)。

作为记录,我很惊讶这不再适用于 Chrome(至少在我刚刚测试过的 Windows 版本 25 中)。p::selection, p::-moz-selection它过去固执地简单地解析选择器p::selection并应用规则而不是遵循规范,开发人员有理由这样做。我想知道发生了什么变化...

于 2013-03-25T11:44:44.190 回答