使用body :: selection,我想自定义高亮颜色

时间:2012-01-28 14:38:24

标签: css css3 selection textselection

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

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

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

2 个答案:

答案 0 :(得分:11)

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

::selection {
    background: red;
}

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

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

从未确定您为E::selection设置的任何元素E的样式应该如何传播到E的后代。有一个更深入的讨论in the www-style mailing list。也是因为这个原因,{CSS} UI的最新LC修订版已经完全从CSS3中删除了::selection;见this section,其中说:

  

在测试发现互操作性问题以及探索/定义的更多细节之后,已经删除了:: selection伪元素,因为它从Selectors中删除了。

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

答案 1 :(得分:0)

如果您想停止级联,可以添加

body *::selection { background: inherit; }

因此,只有顶级文字才能选择红色。示例:http://jsfiddle.net/nu6ju/4/