2011-01-04 20 views
7

Estoy intentando aplicar estilos a todos mis divs, excepto uno específico. Estoy haciendo esto, pero no funciona:Aplicar estilo a todos los div excepto uno específico

#toolbar div[class~="olControlNavigationHistory"]{ 
    float: left; 
    background-repeat: no-repeat; 
    margin: 2px 12px 2px 12px; 
} 

por eso es necesario aplicar este estilo a todos los divs en #toolbar excepto el div con una clase llamada "olControlNavigationHistory".

¿Cómo puedo hacer esto? es posible?

¡Gracias de antemano!

Respuesta

11

Basta con aplicar la regla a todos los divs primera:

#toolbar div { 
    float: left; 
    background-repeat: no-repeat; 
    margin: 2px 12px 2px 12px; 
} 

Luego hay que poner a cero los valores de salida para el caso específico:

#toolbar div.olControlNavigationHistor { 
    float: none; 
    background-repeat: repeat; 
    margin: 0; 
} 

Por supuesto, esto supone que el valor de las propiedades ese div específico habría tenido sin la primera regla aplicada son cada valores predeterminados de propiedades (como margin: 0 y float: none.)

EDITAR: Sin embargo, en el futuro, cuando CSS3 sea compatible con todos, también podría reescribir su regla original como #toolbar div:not(.olControlNavigationHistory) y funcionaría correcta y elegantemente.

+0

Gracias Marcus, su sugerencia fue muy útil . Resolví mi problema :) –

+8

@ user552669 Para el registro '~ =' significa que contiene, no "no es igual" - [w3schools] (http://www.w3schools.com/css/css_attribute_selectors.asp). Sin embargo, en el futuro, cuando CSS3 sea compatible con todos, también podría reescribir la regla original como '#toolbar div: not (.olControlNavigationHistory)' y funcionaría correcta y elegantemente. –

Cuestiones relacionadas