2013-05-16 21 views
5

改變::selection文本顏色的代碼,如果寫成下面的方式工作得很好:::選擇文本顏色的兩個CSS規則 - 爲什麼不能同時選擇它們?

HTML:

<p>This is a paragraph.</p> 

CSS:

p::selection { // This works 
    color:#ff0000; 
} 

p::-moz-selection { // This works 
    color:#ff0000; 
} 

但是,如果我把兩條CSS規則就像下面這條線一樣,不起作用:

HTML:

<p>This is a paragraph.</p> 

CSS:

p::selection, p::-moz-selection { // // This does not work 
    color:#ff0000; 
} 

這是爲什麼不工作?在同一行中寫兩個不同的CSS規則的規則是什麼?

+0

閱讀 - https://developer.mozilla.org/en-US/docs/Web/CSS/::selection – lifetimes

+1

在那裏得到了答案。願意將你的迴應作爲接受的迴應。 –

回答

6

」在同一行寫兩條不同的CSS規則的規則是什麼?

通常情況下,像上面嘗試的多種選擇(使用逗號分隔符)很好,例如,

div, p { 
    background-color:red;  
} 

「這是爲什麼不工作?」

::selection的情況下,事情有點不同。

the following quote from Mozilla看看作爲背後的原因,這是不工作的理由,因爲我們會常常期待它:

「由於事實CSS解析規則要求下探整個 規則當遇到一個無效的僞元素時,必須寫兩條單獨的規則 :::-moz-selection,::selection {...}。該規則將 放在非Gecko瀏覽器上,因爲::-moz-selection在 上無效。

3

這是因爲::selection對Gecko無效,而::-moz-selection對其他人無效。因此,當您編寫p::selection, p::-moz-selection時,由於CSS解析規則,每個瀏覽器都會發現無效的選擇器並排除整個規則。 「

+1

hmm right - '.. CSS解析規則在遇到無效僞元素時需要刪除整個規則。' - 來自https://developer.mozilla.org/en-US/docs/Web/CSS/ ::選擇 –