2010-03-22 3 views
66

Ich habe ein CSS-Stylesheet für mein Projekt erstellt. Gibt es eine Möglichkeit, eine CSS-Regel zu erstellen, die für alle Tabellenelemente gilt, mit Ausnahme von Tabellenelementen, die zur Klasse "dojoxGrid" gehören? Etwas wie:Wie erstelle ich eine CSS-Regel für alle Elemente außer einer Klasse?

.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

Sie benötigen diese Cross-Browser zu arbeiten? Browser haben unterschiedliche Unterstützung für die flexibleren CSS-Selektoren. Es könnte etwas sein, was Sie im Skript tun könnten, wenn es absolut erforderlich ist und browserübergreifend sein muss. – kibibu

+0

Ja, ich brauche es, um mit den wichtigsten Browsern zu arbeiten. Gibt es einen anderen Weg, um es zu erreichen, als durch Skripting? Prost – Nick

+0

Cori Ansatz funktioniert auf Browsern den ganzen Weg zurück zu ie4, vielleicht früher. – kibibu

Antwort

134

Die negation pseudo-class scheint zu sein, was Sie suchen.

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

It's not supported by ≤ IE8 though.

+2

das ist ein schöner CSS3-Selektor, auf den man achten sollte - hoffentlich in IE9 verwendbar. – cori

+4

während mein Kommentar nicht direkt auf die Frage anwendbar ist, ist es erwähnenswert, dass ': nicht' kann als jquery Selektor verwendet werden. zB '$ (" [daten-name = 'bob']: nicht (a) ")', das ist nett. – gingerbreadboy

+3

Dies sollte die akzeptierte Antwort sein, denn es ist die Antwort auf den gewünschten Effekt. Die derzeit akzeptierte Antwort ist ein alternativer Weg, um den gewünschten Effekt zu erzielen, beantwortet die Frage jedoch nicht wirklich. Leute, die diese Frage finden, suchen sehr wahrscheinlich nach der Antwort auf das, was genau gefragt wird, in den meisten Fällen trifft ein alternativer Weg nicht zu. –

11

Wäre das nicht eine CSS-Regel für alle Tabellen setzen und dann eine nachfolgende eine für Tabellen, in denen class = „dojoxGrid“ Arbeit? Oder fehlt mir etwas?

+3

Ja, das würde absolut funktionieren, aber Sie würden alle diese Eigenschaften auf einen Wert setzen. Wenn du sie "unset" lassen wolltest, dann nein. Vermutlich versucht Nick, die Werte für dojoxGrid nicht zu überlisten, wie sie woanders festgelegt sind. – kibibu

+1

Ich denke es würde. Allerdings setze ich eine Reihe von Eigenschaften für alle Tabellen, ich könnte sie wieder mit den Standardwerten überschreiben, die für das dojoxGrid benötigt werden. Ich bin mir jedoch nicht sicher, was diese Standardwerte sind, da sie von der Dojo-Bibliothek generiert werden. Deshalb habe ich nach einem anderen Weg gesucht, um es zu erreichen. – Nick

4

Die sicherste Wette ist eine Klasse für diese Tabellen zu erstellen und diese verwenden. Derzeit ist es unwahrscheinlich, dass so etwas in allen gängigen Browsern funktioniert.

0

Ich hatte gerade das gleiche Problem, aber das: nicht nicht richtig in meinem Fall arbeiten, damit ich die CSS-Regeln auf der Körperlast aktualisiert.

Verwandte Themen