Une remarque ? Une suggestion ?...

Merci de participer à l'amélioration de ce site. Prenez le temps de rédiger votre remarque le plus précisément possible :

!important - Valeur CSS

!important

Résumé des caractéristiques de la valeur !important

Description rapide
Rend une règle prioritaire sur toutes les autres.
Statut
Standard
Module W3C
Module CSS - Cascade et héritage
Références (W3C)
 🡇  
 🡅  
Statut du document: WD (document de travail)

Statut du document: CR (document candidat à la recommandation)

Statut du document: CR (document candidat à la recommandation)

Statut du document: REC (recommandation)

Statut du document: REC (recommandation)

Statut du document: DEPR (Ancienne spécification, déclarée obsolète)

La valeur !important.

!important est utilisée pour rendre une règle absolument prioritaire sur toutes les autres. On pourra relire le tutoriel sur les règles de priorité du CSS.

Exemple de syntaxe pour forcer la taille des caractères à 12 pixels, quelque soit les valeurs éventuellement définies par d'autres règles :

div { font-weight: bold; font-size: 12px !important; }

La valeur !important doit être utilisée avec précaution et le plus rarement possible. En effet, elle contrarie les mécanismes d'héritage et de priorité de CSS qui sont le plus souvent très pratiques : Le sélecteur le plus précis est prioritaire sur les sélecteurs moins précis. Par exemple, les sélecteurs basés sur un ID sont prioritaires sur les sélecteurs basés sur une classe, car un ID ne peut désigner qu'un seul élément dans la page, alors qu'une classe peut en désigner plusieurs. Le sélecteur avec ID est donc plus précis ; il sera prioritaire.

Pour surcharger une règle déjà notée !important il est possible de répéter cette valeur dans la nouvelle règle. Ce qui conduit à une multiplication de règles notées !important et rend le fonctionnement de la feuille de styles confus.

Comment éviter d'utiliser !important ?

Combiner les sélecteurs pour augmenter leur priorité.

Supposons que nous ayons une règle qui définit la taille des caractères pour les éléments avec id="edito". Comment peut-on forcer cette règle de façon exceptionnelle sur une des pages de notre site ? Et sans utiliser la valeur !important.

#edito { font-family: 'Arial', sans-serif; font-size: 12px; }

La solution est d'utiliser un sélecteur plus précis, ce qui peut se faire en combinant plusieurs sélecteurs :

div#edito { font-size: 14px; } /* Ou même, si c'est nécessaire : /* body div#edito { font-size: 14px; }

Styles dans l'attribut style des balises HTML.

Il faut noter aussi que les règles écrites directement dans la balise HTML ont une priorité supérieure à tous les sélecteurs. Néanmoins cette technique n'est pas à conseiller car elle ne maintient pas la séparation entre les codes HTML et CSS.

<div id="edito" style="font-size:14px;">

Utilisation des couches de cascade.

Cette solution, récemment standardisée, est la meilleure car elle offre tout la souplesse nécessaire. Les couches de cascade se définissent avec la directive @layer. Sur la même page, cous pourrez également consulter un les couches de cascade.

La valeur !important et les animations.

La valeur !important bloque les animations qui pourraient être définies sur la même propriété.
Par ailleurs, il n'est pas autorisé d'utiliser la valeur !important dans la définition d'une animation.

Pour plus d'informations sur les animations, reportez vous à la page sur la propriété animation et à celle sur la directive @keyframes.

@keyframes exemple { from { width: 100px; } to { width: 200px; } } #id { width:200px !important; animation:exemple 2s infinite; }
L'animation n'est pas exécutée, car elle entrerait en conflit avec la clause !important indiquée pour la largeur de l'élément.
@keyframes exemple { from { width: 100px; } 50% { width: 300px !important; } to { width: 200px; } } #id { animation:exemple 2s infinite; }
Dans ce deuxième exemple, l'animation est traitée, mais sans passer par l'étape 50% (300 pixels) : cette étape a été ignorée à cause de la valeur !important qui est incorrecte à cet endroit.

Historique de la valeur !important.

La définition de !important n'a pas évolué depuis sa création, lors de la première spécification du langage.

Voir aussi, dans le même module de standardisation que !important.

Les spécifications CSS éditées par le W3C sont organisées en modules. !important fait partie du module CSS - Cascade et héritage (CSS Cascading and Inheritance). Les définitions suivantes sont également décrites dans ce même module.

Propriétés :

all
Initialisation de toutes les propriétés.

Directives :

Importation d'une feuille de styles.
Définit les couches de cascade (layer) pour faciliter la gestion des priorités entre les règles CSS.