2015-11-11 125 views
5

這可能是一個非常愚蠢的問題,但我不能得到:不是選擇器在CSS中工作。除非它有一個名爲「nocolor」的類,否則我想爲我的頁面中的所有文本着色。下面的代碼,我沒有看到這個問題:CSS:不是選擇器不工作

*:not(.nocolor) { 
 
    color: #f00; 
 
}
<h2>Hello</h2> 
 
<h2 class="nocolor">Hello</h2>

+0

我真的很想知道爲什麼會出現這種情況。我測試過的每個瀏覽器都具有相同的行爲。我想它必須在規範的某個地方。 –

回答

3

我對這種行爲感到驚訝,但*選擇適用於一切讓你不得不看出來的應用程序父元素(如body和html標籤本身)。

您可以通過添加body到選擇修復它,就像這樣:

body *:not(.nocolor) { 
    color: red; 
} 
+0

它的工作原理,謝謝! –

+1

加入'* {color:#000;/*或任何* /}'之前'*:not()'選擇器也適用。 –

+0

是否可以將非選擇器應用於其中的所有孩子?如果我想更改ncolor類中的div標籤的顏色,它不起作用 –

2

你的選擇應寫成像這樣:

:not(.nocolor) { 
    color: #f00; 
} 

刪除「*」,這將選擇一切在頁面上。

查看文檔在這裏:MDN

2

這是因爲*應用於包括body,它不具有.nocolor類的每一個元素。