O que! Important significa em CSS?

409

O que !importantsignifica em CSS?

Está disponível no CSS 2? CSS 3?

Onde é suportado? Todos os navegadores modernos?

Itay Moav-Malimovka
fonte

Respostas:

400

Significa, essencialmente, o que diz; que 'isso é importante, ignore as regras subseqüentes e quaisquer problemas de especificidade comuns, aplique esta regra!'

No uso normal, uma regra definida em uma folha de estilo externa é substituída por um estilo definido no headdocumento, que, por sua vez, é substituído por um estilo em linha dentro do próprio elemento (assumindo a mesma especificidade dos seletores). Definir uma regra com o !important'atributo' (?) Descarta as preocupações normais no que diz respeito à regra 'posterior' substituindo as 'anteriores'.

Além disso, normalmente, uma regra mais específica substituirá uma regra menos específica. Assim:

a {
    /* css */
}

Normalmente é substituído por:

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

Como o último seletor é mais específico (e normalmente não importa onde o seletor mais específico é encontrado (na headfolha de estilo ou na externa)), ele ainda substituirá o seletor menos específico (os atributos de estilo em linha sempre serão substitua o seletor específico 'more-' ou 'less-', pois é sempre mais específico.

Se, no entanto, você adicionar !importantà declaração CSS do seletor menos específico, ela terá prioridade.

O uso !importanttem seus propósitos (embora eu tenha dificuldade em pensar neles), mas é como usar uma explosão nuclear para impedir que as raposas matem suas galinhas; sim, as raposas serão mortas, mas as galinhas também. E a vizinhança.

Isso também torna a depuração do CSS um pesadelo (por experiência pessoal, empírica).

David diz para restabelecer Monica
fonte
253
Também é confuso para muitos desenvolvedores, pois em muitas linguagens de programação o prefixo! significa que não .
Rustyx
19
Uma finalidade para! Important seria em um script GreaseMonkey, no qual você substitui propositalmente o CSS de outras pessoas que provavelmente é mais específico que o seu.
Noumenon
1
Oficialmente, o W3 chama isso de "regra".
JD Smith
5
pelo menos não é sarcástico e diz important!(importante NOT)
user3553260
2
Você escreveu: 'No uso normal, uma regra definida em uma folha de estilo externa é substituída por um estilo definido no cabeçalho do documento'. Está errado.
Jlguenego #
130

A regra! Important é uma maneira de fazer com que seu CSS seja cascateado, mas também tenha sempre as regras que você considera mais cruciais. Uma regra que possua a propriedade! Important sempre será aplicada, independentemente de onde ela apareça no documento CSS.

Então, se você tem o seguinte:

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

a regra com o importante será a aplicada (sem contar a especificidade )

Eu acredito que !importantapareceu no CSS1, então todo navegador suporta (IE4 a IE6 com uma implementação parcial, IE7 + completo)

Além disso, é algo que você não deseja usar com bastante frequência, porque se estiver trabalhando com outras pessoas, poderá substituir outras propriedades.

nicosantangelo
fonte
1
IE4 +, na verdade, com bugs, até 6. inclusive
BoltClock
15
A confusão acontece como !um símbolo para NOT em alguns idiomas, mas agora está mais clara.
Si8
2
Estou especialmente feliz por você ter incluído a sintaxe para uso !important. O CSS é diferente o suficiente de outras linguagens e é fácil esquecer como usar certas coisas.
blainarmstrong
3
@ Si8 - Sim, por causa dessa confusão, eu sempre pensei que "eles" deveriam tê-lo definido como important!, ou talvez IMPORTANT!, e não !important. Gostaria de saber se alguém (que pode ler isso) sabe por que eles definiram com a pontuação na frente? Obviamente, é tarde demais para mudar isso agora.
21419 Kevin Fegan
22

!important faz parte do CSS1.

Navegadores compatíveis: IE5.5 +, Firefox 1+, Safari 3+, Chrome 1+.

Significa algo como:

Use-me, se não houver mais nada importante por perto!

Não posso dizer melhor.

Ciclone
fonte
5
!importantnão está limitado apenas ao Safari 3+; ele é suportado desde o início, como todos os outros navegadores que não são do IE. IE entende a partir da versão 4 para a frente, mas só suporta partida livre de bugs da versão 7.
BoltClock
12

É usado para influenciar a classificação na cascata CSS quando a classificação por origem é feita. Não tem nada a ver com especificidade, como indicado aqui em outras respostas.

Aqui está a prioridade do menor para o maior:

  1. estilos de navegador
  2. declarações de folha de estilo do usuário (sem! importante)
  3. declarações da folha de estilos dos autores (sem! important)
  4. folhas de estilo importantes do autor
  5. ! folhas de estilo importantes para o usuário

Depois que essa especificidade ocorre, as regras ainda têm um dedo na torta.

Referências:

Fabian Barney
fonte
Como @ fabian-barney apontou, !importanté um modificador para a ordem em cascata developer.mozilla.org/en-US/docs/Web/CSS/Cascade (consulte a tabela para referência).
Doomjunky