2010-09-08 29 views

Respuesta

51
  1. especificar un selector más específico, por ejemplo prefijo de una identificación antes de que o prefijo del nombre de nodo antes de la clase
  2. asignar después de la otra clase
  3. si dos clases están en archivos separados, importe el segundo archivo prioridad
  4. ! important

!important es la manera perezosa, pero que realmente debe ir para # 1 para evitar importantes-cepción. Una vez que haya agregado un !important, no puede usarlo para hacer alguna otra regla, incluso más importante.

+3

+1 Pero cambiaría 1 y 3; '! important' es un poco hackey en comparación con el uso de la especificidad de CSS. –

+4

@Richard JP Le Guen: Estaba repasando mis viejas respuestas, borradas, y encontré mi joya de -1 aquí. Estos días rechacé automáticamente respuestas '! Important' que tampoco mencionan la especificidad. Iba a decir que lo dejé fuera de mi respuesta, de lo contrario terminaría siendo una farsa larga, pero eso es solo una excusa;) – BoltClock

+1

@BoltClock - Wow, ha pasado un tiempo (y no puedo ver el respuesta eliminada) pero realmente recuerdo haber comentado algo así. Me alegra saber que ahora eres uno de nosotros, y me alegra saber que tomaste mi voto negativo como una fuente de crítica constructiva. Establecer un buen ejemplo para el resto de la comunidad SO :) –

9

Debe utilizar la especificidad de CSS para anular las declaraciones anteriores http://htmldog.com/guides/cssadvanced/specificity/

p = 1 point 
.column = 10 points 
#wrap = 100 points 

Así: p.column { text-align: right; } se pueden sobrescribir por: body p.column { text-align: left; }

+2

Artículo excelente. Para alguien que ve "especificidad" muy a menudo pero nunca entendió completamente su significado, este era oro líquido. Finalmente tengo una regla matemática para aplicar cuando se producen conflictos de CSS. – GigiSan

19

Si quieres ser explícita al respecto, puede especificar cómo la combinación de esas dos clases trabaja en conjunto, proporcionando una regla para los elementos que contienen ambas clases. Por ejemplo, puede dar explícitamente algo con las dos clases foo y bar del mismo estilo que el bar de la siguiente manera. Esto funciona porque .foo.bar es más específico que solo .foo para los elementos que tienen ambas clases, y por lo tanto esta regla tendrá prioridad sobre la regla .foo.

.foo { text-align: center } 
.bar, .foo.bar { text-align: right } 

Si no quiere estar presente explícita, usted podría colocar la regla para bar después de la regla para foo, como selectores dados de la misma especificidad, más tarde normas prevalecen sobre las anteriores:

.foo { text-align: center } 
.bar { text-align: right } 

Puede obtener más información sobre cómo se determina la precedencia entre las reglas en el capítulo de especificaciones de CSS sobre cascade; esa es la "C" de CSS, y es importante entenderlo bien para aprovechar al máximo CSS.

Cuestiones relacionadas