2015-11-11 27 views
5

Jest to prawdopodobnie naprawdę głupie pytanie, ale nie mogę uzyskać: nie selektora do pracy w css. Chcę kolorować cały tekst na mojej stronie, chyba że ma klasę "nocolor". Oto kod, nie widzę problemu:CSS: nie selektor nie działa

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

+0

Naprawdę chciałbym wiedzieć, dlaczego tak się dzieje. Każda przeglądarka, na której ją testowałem, miała takie samo zachowanie. Wyobrażam sobie, że musi to być gdzieś w specyfikacji. –

Odpowiedz

3

byłem zaskoczony przez to zachowanie, ale * selektor ma zastosowanie do wszystko więc trzeba zwrócić uwagę na zastosowanie do rodzica elementy również (jak same znaczniki ciała i html).

Można go naprawić dodając body do selektora, tak:

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

Działa, dzięki! –

+1

dodanie '* {color: # 000;/* lub cokolwiek * /} 'zanim działa również selektor' *: not() '. –

+0

Czy możliwe jest zastosowanie selektora nie dla wszystkich dzieci w nim? Jeśli chcę zmienić kolor tagu p, który jest w div z klasą nocolor, to nie działa –

2

Twój selektor powinny być napisane tak:

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

Usuń '*', a to będzie wybrać wszystko na stronie.

patrz Dokumentacja tutaj: MDN

2

To dlatego * jest stosowana do każdego elementu w tym body, który nie posiada klasę .nocolor.