Sei qui: Homepage » css » Quando usare !important nei CSS
lug 18 2011
L’uso di !important nei CSS è la principale causa di frustrazione quando si lavora su un sito, soprattutto se ereditato da altri sviluppatori.
Infatti se all’interno di un CSS ci sono delle regole contrassegnate con !important e questi valori devono essere modificati su dei nuovi elementi, non ci sono molte soluzioni. Le principali sono due:
Basta capire questo per rendersi conto di come sia sempre meglio evitarne l’uso. Mi era capitato anche in passato di sfiorare l’argomento parlando degli standard del sito della BBC, dove era appunto proibito agli sviluppatori di utilizzare questa regola.
Ma quali sono le alternative? Prima di tutto pensare fin da subito a come dovrà essere organizzato il foglio di stile. Scrivere regole generiche non aiuta e molto spesso è il motivo per cui si viene tentati dall’utilizzo di !important.
Un link ad esempio avrà una sua definizione generica all’inizio del CSS:
a {...}
Ma unire a questo qualcosa come
#content a {...}
…sarà fonte di problemi dopo poco tempo, perché è una definizione troppo generica per non richiedere nuovi interventi. Per evitarlo, la cosa migliore è appoggiarsi sempre a selettori ben specifici, a seconda dell’area del sito.
In un blog potrebbero esserci ad esempio vari div contenitori all’interno dei post, con cui differenziare lo stile dei link:
#content .post_header a {...}
#content .post a {...}
O sulla sidebar invece di un generico
#sidebar a {...}
potrebbero essere definite delle aree precise come sui temi WordPress:
.widget a {...}
Uno dei rari casi in cui l’uso di !important può avere senso è quando sono presenti elementi specifici che devono apparire uguali in qualsiasi punto del sito. Non sto parlando di bottoni e riquadri (che potrebbero sempre avere delle varianti), ma ad esempio di indicazioni di stato come i messaggi di errore.
Contrassegnare una classe .error nel seguente modo potrebbe essere l’unica ragione per tollerarne l’uso:
.error {color: #f00 !important;}
Se volete leggere anche un’opinione autorevole a riguardo, vi consiglio di dare un’occhiata al post When using !important is the right choice su CSS Tricks, e di leggere attentamente il commento di Jonathan Snook in risposta agli esempi citati dall’autore.
Classificato in css.
TomStardust.com è realizzato secondo i canoni dell'accessibilità, le normative del W3C, e la legge Stanca, pur non essendo il sito di una pubblica amministrazione e non avendo nessun obbligo a riguardo.
Poter navigare su internet ed accedere alle informazioni sulla rete è un diritto di tutti, realizzare siti che rispondano agli standard web dovrebbe essere un dovere di ogni sviluppatore.
Questo sito e tutti i suoi contenuti, compresi i temi Wordpress, sono pubblicati sotto licenza Creative Commons 2.5.
Questo sito non rappresenta una testata giornalistica e viene aggiornato senza alcuna periodicità.
Powered by Wordpress
18 luglio 2011 alle 09:10
Gabriele Romanato!important è utile soprattutto quando si devono resettare gli stili di widget o plugin esterni che fanno uso di JavaScript. Tali plugin, infatti, usano l’oggetto style degli elementi che ha una specificità maggiore delle normali regole di stile CSS. Post molto utile. :-)
23 luglio 2011 alle 13:57
GleenkInteressante, anche il commento di Gabriele. Non sapevo che !important avesse priorità su gli stili inline. Curiosa come cosa! Ad ogni modo credo anche io che sia realmente l’unico utilizzo sensato :)
23 luglio 2011 alle 20:30
coocksappeavevo studiato il css e me lo sono già dimenticata! :( la mia memoria… :S
14 novembre 2011 alle 13:15
ZepQuoto Gleenk! E complimenti per l’articolo!
5 dicembre 2011 alle 22:58
Alfio T.In effetti c’è da impazzire a regolare gli important nel foglio di stile CSS. Solo l’uso di Firebug aiuta lo sviluppatore del codice!
31 dicembre 2011 alle 13:47
evolutionArticolo molto utile, non lo uso spesso, anzi, cercavo inconsciamente di non utilizzarlo asd.
2 febbraio 2012 alle 13:25
Web Designer FreelanceGrazie per la guida molto utile e per tutto il sito. Per un web designer sono indispensabili per accrescere le proprie conoscenze!
Giuseppe Stancarone