!important
En CSS, !important funciona como una palabra clave para ignorar las reglas de cascada y especificidad. Cualquier definición que vaya acompañada de un !important tendrá mayor importancia que cualquier otra aunque esta última sea más especifica.
Fijensé que se coloca justo antes del ; que finaliza la definición.
p {
color:green !important;
color:red;
}
En este caso, normalmente el texto debería ser de color rojo (porque color: red, al aparecer después de color: green, debería rectificarlo), pero !important obliga a que se ignoren las reglas de cascada (y el texto se mantiene verde). Ejemplo 1
Como dije antes, !important tiene mayor importancia que selectores más especificos.
p {
color: green !important;
}
p#foo {
color: red;
}
En este caso, un simple selector de elementos le gana a un selector de ID. Ejemplo 2
Más importante que !important
Cuando dos !important se enfrentan, se respetan reglas de cascada y especificidad.
p {
color: red !important;
color: green !important;
}
En este caso, se respetan las reglas de cascada y la segunda definición reemplaza a la primera. Ejemplo 3
p {
color: red !important;
}
p#foo {
color: green !important
}
En este caso, se respetan las reglas de especificidad y la segunda definición reemplaza a la primera. Ejemplo 4
Otro hack: !important en Internet Explorer 6 y anteriores
Hasta la versión 6 inclusive, Internet Explorer ignora esta regla y considera a cualquier definición que incluya !important como una definición más.
p {
color: green !important;
color: red;
}
Sólo en Internet Explorer 6 y anteriores, el texto será rojo. Ejemplo 5
Se supone que !important será implementado correctamente en Internet Explorer 7. The Web Standards Project: !important Fixed in Later IE7 Releases
Cuándo usarla
Como hemos visto, !important es demasiado poderoso, y un uso indiscriminado en la hoja de estilos puede llevar a un tremendo caos (por perder la cuenta de dónde habrá declarado alguno).
Los mejores usos que se les puede dar (dejando de lado el tema de hojas de estilos de usuarios) serían:
- Cuando estamos seguros de no querer que cierta definición sea reemplazada.
- Al momento de resolver errores en el renderizado. Si alguna propiedad está molestando y no sabemos dónde fue declarada, se puede probar redefinirla siempre. Por ejemplo, ¿algún elemento muestra un extraño margen?
* {margin: 0 !important}para asegurarnos que no hemos dejado alguna declaración olvidada en otro lado.
13 comentarios. Agregá el tuyo →
Rodrigo
Cuando usas el selector universal,
*, como ejemplo del post, me imagino que te referis a “inserte un elemento aquí”. Digo por que usar* {margin: 0 !important}es bastante peligroso (no dejaría especificar margenes a ningun elemento que aparezca luego en el CSS).16 de febrero de 2006
Federico
Cuando la desesperación me gana, uso
*para saber si esmarginopadding. Después voy buscando qué elemento especificamente da problemas.16 de febrero de 2006
Dam
Amo !important, uno de los usos que le doy es crear una hoja de estilos común para todos los browsers. En otras palabras, evitar que un browser use un margen determinado o un padding específico mientras que otro browser usa distintos valores.
Generalmente:
* {
background-color: transparent;
color: black;
font-family: Verdana, sans-serif;
font-size: small;
margin: 0;
padding: 0;
text-decoration: none
}
Es mi forma de empezar una hoja de estilos.
16 de febrero de 2006
Dam
Cuac, me olvidé los important!
16 de febrero de 2006
Federico
En realidad no hace falta que declares
!importantcuando querés resetear margenes y padding.16 de febrero de 2006
Dam
Es que en realidad mi último comentario estuvo de más, pero no tenía ganas de volver a comentar,
17 de febrero de 2006
eduardo
excelente esto me ayudó bastante
19 de noviembre de 2007
Chubawka
fuiste un playboy maestro de la noche! viejo lobo !important
19 de diciembre de 2007
Eduardo
No entiendo por ejemplo aqui:
p {
color: green !important;
color: red;
}
si esto es equivalente a
p {
color: green
}
Para que usar !important???
23 de enero de 2008
Federico
Es verdad que es equivalente. La única intención del ejemplo es hacer equivocar a aquellos navegadores que no implementan !important, como Internet Explorer 6. Vos podés buscarle alguna utilidad a esa no funcionalidad.
23 de enero de 2008
Leo
Muy bueno eso del important, me salva la vida
¿existe una forma de poner important a toda una classe sin necesidad de ponersela a todos los elementos y no tener que hacer esto?:
.corrector {
color: blue ¡important;
background: red ¡important;
padding-top: 2px !important;
font-weight: bold !important;
}
Gracias
5 de mayo de 2008
Federico
No hasta donde tengo entendido.
Podrías tratar siendo más especifico con los selectores pero no creo que sea lo que buscas.
5 de mayo de 2008
Julio
Muy bueno el ejemplo
gracias por estar a disposición de los desarrolladores, admiro la gente que postea sus conocimientos porque sí. Gracias nuevamente.
23 de mayo de 2008