2012-01-28 45 views
3

为什么不能使用body::selection,当我想要什么,能凸显为彩色我想要的,什么都包括对IMG利H1用身体::选择,我想自定义高亮颜色

例子这里 现在我想一切亮点是红色,但我使用body::selection,它从来没有工作

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

+0

你的问题是什么?例子像一个魅力:'body :: selection {background-color:red; }'完全按照它应该做的。 – c69 2012-01-28 15:07:02

+0

我的问题是为什么它确实改变img p li h1突出颜色也变成红色? – 2012-01-28 15:20:07

+0

,因为一切都嵌套在身体标记 – 2012-01-28 15:20:41

回答

10

如果你想选择背景适用于所有元素,省略类型选择:

::selection { 
    background: red; 
} 

对于这个问题,添加::-moz-selection因此它可以在Firefox太:

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

这是从来没有决定到底你的样式E::selection设置任何元素E应该传播到后代E。有一个更深入的讨论in the www-style mailing list。也是因为这个原因,::selection已经完全从CSS3下降到CSS3 UI的最新LC版本;看到this section,它说:

的选择::伪元素已被删除,因为它是从选择器下降后的测试中发现的互操作性问题,并进一步详细探讨/定义。

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

+0

也许你是对的,因为我已经尝试了很多方式来使它,但没有人让我感到高兴 – 2012-01-28 15:43:40

0

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

body *::selection { background: inherit; }

在顶级因此,只有文字会用红色来选择。例如:http://jsfiddle.net/nu6ju/4/