为什么我不能将:: selection和:: - moz-selection组合在一个CSS规则中?

时间:2013-08-07 21:55:44

标签: css vendor-prefix

我非常喜欢使用::selection::-moz-selection来修改一个网站 - 我讨厌默认的蓝白色!

然而,我发现一件让我感到困惑的小事:我不能将::selection::-moz-selection放在同一个CSS规则中,如下所示:

::selection, ::-moz-selection {
    background:#8A1920;
    color:#FFFF;
}

jsFiddle link

我觉得这很烦人,因为这意味着如果我想改变我的背景颜色(或其他一些选择方式),我必须编辑两个单独的规则。它也违反了我几乎虔诚地遵循的政策:D.R.Y。 (不要重复)。

我在Chrome 28,Chrome Canary 30,Firefox 22,Firefox 23,IE 9和IE 10中对此进行了测试,它们都得到了相同的结果。这里出了什么问题?

如果他们必须保持分开,有没有办法让他们进一步加入?类似的东西:

.selected {
    background:#8A1920;
    color:#FFF;
}

::selection {
    @copy-from(.selected); /* I know this line is completely made up */
}

::-moz-selection {
    @copy-from(.selected);
}

真的很有用。

1 个答案:

答案 0 :(得分:4)

这来自文档:

  

Gecko是唯一需要前缀的引擎。由于这个事实   CSS解析规则要求在删除整个规则时   遇到无效的伪元素,必须有两个单独的规则   书面::: - moz-selection,:: selection {...}。规则是   放在非Gecko浏览器上,因为:: - moz-selection对它们无效。

https://developer.mozilla.org/en-US/docs/Web/CSS/::selection