2012-01-28 47 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/