Cosa significa! Important in CSS?


409

Cosa !importantsignifica in CSS?

È disponibile in CSS 2? CSS 3?

Dove è supportato? Tutti i browser moderni?



17
... qualcosa da evitare quando possibile.
Scott,

Risposte:


400

Significa essenzialmente ciò che dice; che "questo è importante, ignora le regole successive e qualsiasi normale problema di specificità, applica questa regola!"

Nell'uso normale una regola definita in un foglio di stile esterno viene sovrascritta da uno stile definito nel headdocumento, che a sua volta viene sovrascritto da uno stile in linea all'interno dell'elemento stesso (assumendo la stessa specificità dei selettori). La definizione di una regola con l' !importantattributo "attributo" (?) Elimina le normali preoccupazioni per quanto riguarda la regola "successiva" che ha la precedenza su quelle "precedenti".

Inoltre, normalmente, una regola più specifica avrà la precedenza su una regola meno specifica. Così:

a {
    /* css */
}

Viene normalmente annullato da:

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

Poiché quest'ultimo selettore è più specifico (e normalmente non importa dove si trova il selettore più specifico (nel headfoglio di stile esterno o) sostituirà comunque il selettore meno specifico (gli attributi di stile in linea rimarranno sempre sovrascrive il selettore "più-" o "meno", in quanto è sempre più specifico.

Se, tuttavia, si aggiunge !importantalla dichiarazione CSS del selettore meno specifico, avrà priorità.

Usare !importantha i suoi scopi (anche se faccio fatica a pensarli), ma è molto come usare un'esplosione nucleare per fermare le volpi che uccidono i tuoi polli; sì, le volpi saranno uccise, ma anche i polli. E il quartiere.

Inoltre rende il debug dei CSS un incubo (per esperienza personale, empirica,).


253
È anche fonte di confusione per molti sviluppatori, poiché in molti linguaggi di programmazione il prefisso! non significa .
Rustyx,

19
Uno scopo di! Important sarebbe in uno script GreaseMonkey in cui si sta deliberatamente scavalcando il CSS di altre persone che è probabilmente più specifico del tuo.
Noumenon,

1
Ufficialmente il W3 lo chiama una "regola".
JD Smith,

5
almeno non è sarcastico e dice important!(importante NON)
user3553260

2
Hai scritto: "Nell'uso normale una regola definita in un foglio di stile esterno è sovrascritta da uno stile definito nella testa del documento". È sbagliato.
jlguenego,

130

La regola! Important è un modo per rendere il tuo CSS in cascata ma anche avere le regole che ritieni più cruciali vengano sempre applicate. Una regola che ha la proprietà! Important sarà sempre applicata indipendentemente da dove appare quella regola nel documento CSS.

Quindi, se si dispone di quanto segue:

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

la regola con l'importante sarà quella applicata (senza contare la specificità )

Credo che sia !importantapparso in CSS1, quindi ogni browser lo supporta (da IE4 a IE6 con un'implementazione parziale, IE7 + completo)

Inoltre, è qualcosa che non vuoi usare abbastanza spesso, perché se lavori con altre persone puoi ignorare altre proprietà.


1
IE4 +, in realtà, con bug, fino a 6. incluso
BoltClock

15
La confusione accade in quanto !è un simbolo di NOT in alcune lingue ma ora è più chiara.
Si8,

2
Sono particolarmente contento che tu abbia incluso la sintassi per l'uso !important. Il CSS è abbastanza diverso da altre lingue che è facile dimenticare come usare certe cose.
blainarmstrong

3
@ Si8 - Sì, a causa di quella confusione, ho sempre pensato che "loro" avrebbero dovuto definirlo come important!, o forse IMPORTANT!, piuttosto che !important. Mi chiedo se qualcuno (che potrebbe leggere questo) sa perché l'hanno definito con la punteggiatura davanti? Ovviamente, è troppo tardi per cambiarlo ora.
Kevin Fegan,

22

!important fa parte di CSS1.

Browser che lo supportano: IE5.5 +, Firefox 1+, Safari 3+, Chrome 1+.

Significa qualcosa come:

Usami, se non c'è niente di importante in giro!

Non posso dire di meglio.


5
!importantnon è limitato a Safari 3+; lo ha supportato fin dall'inizio come tutti gli altri browser non IE. IE lo capisce dalla versione 4 in poi, ma lo supporta solo senza errori a partire dalla versione 7.
BoltClock

12

Viene utilizzato per influenzare l'ordinamento nella cascata CSS quando viene eseguito l'ordinamento per origine. Non ha nulla a che fare con la specificità come indicato qui in altre risposte.

Ecco la priorità dal più basso al più alto:

  1. stili del browser
  2. dichiarazioni del foglio di stile dell'utente (senza! importante)
  3. dichiarazioni del foglio di stile dell'autore (senza! importante)
  4. ! importanti fogli di stile d'autore
  5. ! importanti fogli di stile utente

Dopo quella specificità si verifica per le regole che hanno ancora un dito nella torta.

Riferimenti:


Come ha sottolineato @ fabian-barney !importantè un modificatore dell'ordine a cascata developer.mozilla.org/en-US/docs/Web/CSS/Cascade (vedere la tabella per riferimento).
Doomjunky,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.