¿Qué significa! Important en CSS?

409

¿Qué !importantsignifica en CSS?

¿Está disponible en CSS 2? CSS 3?

¿Dónde está soportado? Todos los navegadores modernos?

Itay Moav -Malimovka
fuente

Respuestas:

400

Significa, esencialmente, lo que dice; que "esto es importante, ignore las reglas posteriores y cualquier problema de especificidad habitual, ¡aplique esta regla!"

En el uso normal, una regla definida en una hoja de estilo externa es anulada por un estilo definido en el headdocumento, que, a su vez, es anulado por un estilo en línea dentro del elemento mismo (asumiendo la especificidad igual de los selectores). La definición de una regla con el !important'atributo' (?) Descarta las preocupaciones normales con respecto a la regla 'posterior' que anula las 'anteriores'.

Además, normalmente, una regla más específica anulará una regla menos específica. Entonces:

a {
    /* css */
}

Normalmente es anulado por:

body div #elementID ul li a {
    /* css */
}

Como el último selector es más específico (y normalmente no importa dónde se encuentre el selector más específico (en la headhoja de estilo o en la hoja de estilo externa), todavía anulará el selector menos específico (los atributos de estilo en línea siempre anule el selector específico 'más-' o 'menos-', ya que siempre es más específico.

Sin embargo, si agrega !importanta la declaración CSS del selector menos específico, tendrá prioridad.

Usar !importanttiene sus propósitos (aunque me cuesta pensar en ellos), pero es muy parecido a usar una explosión nuclear para detener a los zorros que matan a tus gallinas; Sí, los zorros serán asesinados, pero también los pollos. Y el barrio.

También hace que depurar tu CSS sea una pesadilla (desde la experiencia personal, empírica).

David dice que reinstale a Mónica
fuente
253
¡También es confuso para muchos desarrolladores ya que en muchos lenguajes de programación el prefijo! significa no .
rustyx 01 de
19
Uno de los propósitos de! Important sería un script de GreaseMonkey en el que anule deliberadamente el CSS de otras personas que probablemente sea más específico que el suyo.
Noumenon
1
Oficialmente, el W3 lo llama una "regla".
JD Smith
55
al menos no es sarcástico y dice important!(importante NO)
user3553260
2
Usted escribió: 'En uso normal, una regla definida en una hoja de estilo externa es anulada por un estilo definido en el encabezado del documento'. Está mal.
jlguenego
130

La regla! Importante es una forma de hacer que su cascada de CSS pero también tenga las reglas que cree que son cruciales siempre se deben aplicar. Una regla que tiene la propiedad! Important siempre se aplicará sin importar dónde aparezca esa regla en el documento CSS.

Entonces, si tienes lo siguiente:

.class {
   color:red !important;
}
.outerClass .class {
   color:blue;
}

la regla con lo importante será la aplicada (sin contar la especificidad )

Creo que !importantapareció en CSS1, por lo que todos los navegadores lo admiten (IE4 a IE6 con una implementación parcial, IE7 + completo)

Además, es algo que no desea usar con bastante frecuencia, porque si está trabajando con otras personas puede anular otras propiedades.

nicosantangelo
fuente
1
IE4 +, en realidad, con errores, hasta e inclusive 6.
BoltClock
15
La confusión ocurre ya que !es un símbolo de NO en algunos idiomas, pero ahora es más claro.
Si8
2
Me alegro especialmente de que hayas incluido la sintaxis para usar !important. CSS es lo suficientemente diferente de otros lenguajes que es fácil olvidar cómo usar ciertas cosas.
blainarmstrong
3
@ Si8 - Sí, debido a esa confusión, siempre he pensado que "ellos" deberían haberlo definido como important!, o tal vez IMPORTANT!, en lugar de !important. Me pregunto si alguien (que podría leer esto) sabe por qué lo definieron con la puntuación en frente. Obviamente, es demasiado tarde para cambiarlo ahora.
Kevin Fegan
22

!important es parte de CSS1.

Navegadores compatibles: IE5.5 +, Firefox 1+, Safari 3+, Chrome 1+.

Significa, algo como:

¡Úsame si no hay nada más importante alrededor!

No puedo decirlo mejor.

Ciclón
fuente
55
!importantno se limita solo a Safari 3+; lo ha apoyado desde el principio como todos los demás navegadores que no son IE. IE lo comprende desde la versión 4 en adelante, pero solo lo admite sin errores a partir de la versión 7.
BoltClock
12

Se utiliza para influir en la ordenación en la cascada CSS cuando se realiza la ordenación por origen. No tiene nada que ver con la especificidad como se indica aquí en otras respuestas.

Aquí está la prioridad de menor a mayor:

  1. estilos de navegador
  2. declaraciones de hoja de estilo de usuario (sin! importante)
  3. declaraciones de hoja de estilo de autor (sin! importante)
  4. ! importantes hojas de estilo de autor
  5. ! hojas de estilo de usuario importantes

Después de eso, tiene lugar la especificidad de que las reglas todavía tienen un dedo en el pastel.

Referencias

Fabian Barney
fuente
Como @ fabian-barney señaló !importantes un modificador para el orden en cascada developer.mozilla.org/en-US/docs/Web/CSS/Cascade (consulte la tabla como referencia).
Doomjunky