2010-03-22 17 views
66

Utworzyłem arkusz stylów CSS dla mojego projektu. Czy istnieje sposób, w jaki mogę utworzyć regułę css, która dotyczy wszystkich elementów tabeli, Z WYJĄTKIEM elementów tabeli należących do klasy "dojoxGrid"? Coś jak:Jak utworzyć regułę css dla wszystkich elementów poza jedną klasą?

.not(dojoxGrid) table{ 
    width:100%; 
    border-top:1px solid #dddddd; 
    border-left:1px solid #dddddd; 
    border-right:1px solid #dddddd; 
    margin:1em auto; 
    border-collapse:collapse; 
} 
+0

Czy potrzebujesz tego do pracy w różnych przeglądarkach? Przeglądarki mają różną obsługę bardziej elastycznych selektorów CSS. Może to być coś, co możesz zrobić w skrypcie, jeśli jest to absolutnie wymagane i musi być w wielu przeglądarkach. – kibibu

+0

Tak, potrzebuję go do pracy w głównych przeglądarkach. Czy istnieje inny sposób, w jaki mogę to osiągnąć, niż poprzez pisanie skryptów? Pozdrawiam – Nick

+0

Podejście Coriego będzie działać na przeglądarkach aż do I4, może wcześniej. – kibibu

Odpowiedz

134

negation pseudo-class wydaje się być tym, czego szukasz.

table:not(.dojoxGrid) {color:red;} 

It's not supported by ≤ IE8 though.

+2

to ładny selektor css3, o którym należy pamiętać - mam nadzieję, że będzie użyteczny w IE9. – cori

+4

podczas gdy mój komentarz nie dotyczy bezpośrednio tego pytania, warto zauważyć, że ': nie' MOŻE być używany jako selektor jquery. tj. '$ (" [data-name = 'bob']: not (a) ")', co jest miłe. – gingerbreadboy

+3

To powinna być zaakceptowana odpowiedź, ponieważ jest odpowiedzią na pożądany efekt. Obecna przyjęta odpowiedź jest alternatywnym sposobem osiągnięcia pożądanego efektu, ale tak naprawdę nie odpowiada na pytanie. Osoby, które znajdują to pytanie, najprawdopodobniej szukają odpowiedzi na to, co jest dokładnie zadawane, w większości przypadków alternatywny sposób nie ma zastosowania. –

11

nie byłoby ustawienie reguły css dla wszystkich tabel, a następnie kolejny jeden na stołach gdzie class = praca „dojoxGrid”? Czy może czegoś brakuje?

+3

Tak, to absolutnie zadziała, ale ustawiasz wszystkie te właściwości na wartość. Jeśli chcesz zostawić je "rozbrojone", to nie. Prawdopodobnie Nick stara się nie zbijać wartości dla dojoxGrid, ponieważ są one ustawione gdzie indziej. – kibibu

+1

Myślę, że tak. Jednak ustawiając zestaw właściwości dla wszystkich tabel, mógłbym ponownie nadpisać je wartościami domyślnymi potrzebnymi do dojoxGrid. Jednak nie jestem pewien, jakie są wartości domyślne, ponieważ są one generowane przez bibliotekę dojo. Dlatego szukałem innego sposobu, aby to osiągnąć. – Nick

4

Najbezpieczniejszym rozwiązaniem jest stworzenie klasy na tych stołach i użycie jej. Obecnie uzyskanie czegoś takiego do pracy we wszystkich głównych przeglądarkach jest mało prawdopodobne.

0

Po prostu miałem ten sam problem, ale: nie działał nieprawidłowo w moim przypadku, więc zaktualizowałem zasady css dotyczące obciążenia ciałem.

Powiązane problemy