2010-03-22 11 views
66

He creado una hoja de estilo CSS para mi proyecto. ¿Hay alguna manera de que pueda crear una regla CSS que se aplique a todos los elementos de la tabla EXCEPTO los elementos de la tabla que pertenecen a la clase "dojoxGrid"? Algo así como:¿Cómo crear una regla css para todos los elementos excepto una clase?

.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

¿Necesita esto para trabajar con varios navegadores? Los navegadores tienen soporte diferente para los selectores CSS más flexibles. Podría ser algo que podría hacer en el script si es absolutamente necesario y debe ser un navegador cruzado. – kibibu

+0

sí, lo necesito para trabajar en los principales navegadores. ¿Hay alguna otra forma en que pueda lograrlo en lugar de a través de secuencias de comandos? cheers – Nick

+0

El enfoque de Cori funcionará en los navegadores desde ie4, quizás antes. – kibibu

Respuesta

134

El negation pseudo-class parece ser lo que estás buscando.

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

It's not supported by ≤ IE8 though.

+2

que es un buen selector css3 para tener en cuenta, con suerte se puede usar en IE9. – cori

+4

mientras mi comentario no es directamente aplicable a la pregunta, vale la pena señalar que ': not' PUEDE utilizarse como un selector de jquery. es decir, '$ (" [data-name = 'bob']: not (a) ")', lo cual es bueno. – gingerbreadboy

+3

Esta debería ser la respuesta aceptada, porque es la respuesta al efecto deseado. La respuesta aceptada actual es una forma alternativa de lograr el efecto deseado, pero realmente no responde la pregunta. Las personas que encuentran esta pregunta, es muy probable que busquen la respuesta a lo que se pregunta exactamente, en la mayoría de los casos, una forma alternativa no se aplica. –

11

No sería el establecimiento de una regla CSS para todas las tablas, y luego uno posterior para mesas donde class = trabajo "dojoxGrid"? ¿O me estoy perdiendo algo?

+3

Sí, eso funcionaría absolutamente, pero establecería todas esas propiedades a un valor. Si quería dejarlos "desarmados", entonces no. Es de suponer que Nick está intentando no superar los valores de dojoxGrid ya que están configurados en otra parte. – kibibu

+1

Creo que sí. Sin embargo, estoy configurando un conjunto de propiedades para todas las tablas, podría sobrescribirlas con los valores predeterminados necesarios para dojoxGrid. Sin embargo, no estoy seguro de cuáles son estos valores predeterminados, ya que son generados por la biblioteca dojo. Por lo tanto, estaba buscando otra forma de lograrlo. – Nick

4

La apuesta más segura es crear una clase en esas tablas y usar eso. Actualmente, es improbable que algo como esto funcione en todos los principales navegadores.

0

Acabo de tener el mismo problema, pero el: no no funcionaba correctamente en mi caso, así que actualicé las reglas de css en la carga del cuerpo.

Cuestiones relacionadas