2014-06-17 12 views
64

Próbuję użyć właściwości :not() wykluczyć parę klas z reguły, np:Wiele klas wewnątrz: nie()

*:not(.class1, class2) { display: none; } 

Jednak wygląda na to własność not() nie obsługuje oddzielone przecinkami klasy, jak pokazano w this fiddle.

HTML:

<div class='one'> 
    foo 
</div> 
<div class='two'> 
    foo 
</div> 
<div class='three'> 
    foo 
</div> 
<div class='four'> 
    foo 
</div> 

CSS:

div { 
    background-color: #CBA; 
} 

div:not(.one) { 
    background-color: #ABC; 
} 

div:not(.one, .three) { 
    color: #F00; 
} 

Pierwsze i drugie stosuje się zasady, ale trzeci nie.

Nie mogę wykonać *:not(.class1), *:not(.class2), ponieważ dowolny element, który ma class2 zostanie wybrany przez *:not(.class1) i odwrotnie.

nie chcę robić

* { display: none;} 
.class1, .class2 { display: inline; } 

ponieważ nie wszystkie .class1 i .class2 elementy mają taką samą oryginalną właściwości wyświetlania, a ja chcę, żeby go zatrzymać.

Jak wykluczyć wiele klas z reguły za pomocą właściwości not() lub w inny sposób?

+2

jak zauważyłeś, śpiączka nie jest jeszcze odpowiednio wdrożone, tak zrobić to w ten sposób: '*: not (.class1): nie (.class2) 'i tak dalej –

Odpowiedz

154

Można użyć:

div:not(.one):not(.three) { 
    color: #F00; 
} 

Fiddle

+0

... Miałem przeczucie, że przeoczyłem coś dość prostego. Okazuje się, że miałem rację! Dziękuję (wkrótce wrócę do zaakceptowania, przed upływem tego terminu jest limit czasu). – asfallows

+2

Próbowałem tego dla mojego projektu, ale czyni to regułę zbyt szczegółową i nadpisuje większość moich pozostałych zasad. –

+5

co powiesz na "nie (.one, .three)"? wydaje się działać dla mnie. – Sean

Powiązane problemy