5

为什么不能使用body::selection,当我想要任何可以突出显示为我想要的颜色时,任何东西都包括 p img li h1

这里的例子现在我希望所有突出显示为红色,但我正在使用body::selection,它永远不会工作

http://jsfiddle.net/kent93/nu6ju/

4

2 回答 2

15

如果要将选择背景应用于所有元素,请省略类型选择器:

::selection {
    background: red;
}

就此而言,添加::-moz-selection它也可以在 Firefox 中使用:

::-moz-selection {
    background: red;
}
::selection {
    background: red;
}

从来没有决定你E::selection为任何元素设置的样式E应该如何传播给E. www-style mailing list 中有更深入的讨论。也正是因为这个原因,::selection在 CSS3 UI 的最新 LC 修订版中完全从 CSS3 中删除了;请参阅本节,其中说:

::selection 伪元素已被删除,因为它在测试发现互操作性问题和进一步探索/定义的细节后从选择器中删除。

我最好的猜测是浏览器(至少是 Firefox)只是不会将相同的规则应用于后代元素。因此,如果您将伪元素应用于body,则只有body文本将具有自定义选择背景;嵌套在其中的所有内容都没有选择背景。

于 2012-01-28T15:36:19.670 回答
0

如果要停止级联,可以添加

body *::selection { background: inherit; }

所以只有顶层的文本会被选择为红色。示例:http: //jsfiddle.net/nu6ju/4/

于 2012-01-28T15:42:23.203 回答