2010-03-22 14 views
66

Ho creato un foglio di stile CSS per il mio progetto. Esiste un modo per creare una regola css che si applica a tutti gli elementi della tabella EXCEPT elementi della tabella appartenenti alla classe "dojoxGrid"? Qualcosa di simile:Come creare una regola css per tutti gli elementi tranne una classe?

.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

Avete bisogno di questo per funzionare cross-browser? I browser hanno un supporto diverso per i selettori CSS più flessibili. Potrebbe essere qualcosa che potresti fare nello script se è assolutamente necessario, e deve essere cross-browser. – kibibu

+0

sì, ne ho bisogno per funzionare sui principali browser. C'è un altro modo in cui posso ottenerlo piuttosto che attraverso lo scripting? evviva – Nick

+0

L'approccio di Cori funzionerà sui browser fino a ie4, forse prima. – kibibu

risposta

134

Il negation pseudo-class sembra essere quello che stai cercando.

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

It's not supported by ≤ IE8 though.

+2

questo è un bel selettore di css3 di cui essere a conoscenza - si spera sia utilizzabile in IE9. – cori

+4

mentre il mio commento non è direttamente applicabile alla domanda, vale la pena notare che ': not' può essere usato come selettore jquery. cioè '$ (" [data-name = 'bob']: not (a) ")', che è bello. – gingerbreadboy

+3

Questa dovrebbe essere la risposta accettata, perché è la risposta all'effetto desiderato. L'attuale risposta accettata è un modo alternativo per ottenere l'effetto desiderato, ma in realtà non risponde alla domanda. Le persone che trovano questa domanda, sono molto probabilmente alla ricerca della risposta a ciò che viene chiesto esattamente, nella maggior parte dei casi non si applica un modo alternativo. –

11

Non sarebbe impostare una regola CSS per tutte le tabelle, e poi un successivo uno per tavoli dove class = lavoro "dojoxGrid"? O mi sta sfuggendo qualcosa?

+3

Sì, sarebbe assolutamente funzionante, ma dovresti impostare tutte queste proprietà su un valore. Se volevi lasciarli "disinseriti", allora no. Presumibilmente Nick sta cercando di non clobare i valori di dojoxGrid come sono impostati altrove. – kibibu

+1

Penso che lo farebbe. Comunque sto impostando una serie di proprietà per tutte le tabelle, potrei nuovamente sovrascriverle con i valori predefiniti necessari per dojoxGrid. Tuttavia non sono sicuro di quali siano questi valori predefiniti così come sono generati dalla libreria dojo. Quindi stavo cercando un altro modo per raggiungerlo. – Nick

4

La scommessa più sicura è quella di creare un corso su quei tavoli e utilizzarlo. Attualmente è improbabile che qualcosa come questo funzioni in tutti i principali browser.

0

Ho appena avuto lo stesso problema, ma il: non funzionava correttamente nel mio caso quindi ho aggiornato le regole CSS sul carico del corpo.

Problemi correlati