Je travaille sur un site web depuis quelques mois, et souvent lorsque j'essaie de modifier quelque chose, je dois utiliser !important
, par exemple :
div.myDiv {
width: 400px !important;
}
afin de le faire afficher comme prévu. Est-ce une mauvaise pratique? Ou est-ce que la commande !important
peut être utilisée? Est-ce que cela peut causer des effets indésirables plus tard dans la ligne?
Oui, je dirais que votre exemple d'utilisation de !important
est une mauvaise pratique, et il est très probable que cela provoque des effets indésirables ultérieurement. Cela ne signifie pas qu'il n'est jamais acceptable d'utiliser.
!important
:Spécificité est l’une des principales forces à l’œuvre lorsque le navigateur décide de la manière dont le CSS affecte la page. Plus un sélecteur est spécifique, plus son importance est importante. Cela coïncide généralement avec la fréquence à laquelle l'élément sélectionné se produit. Par exemple:
button {
color: black;
}
button.highlight {
color: blue;
font-size: 1.5em;
}
button#buyNow {
color: green;
font-size: 2em;
}
Sur cette page, tous les boutons sont en noir. Sauf les boutons avec la classe "mettre en évidence", qui sont bleus. Sauf qu'un bouton unique avec l'ID "buyNow", qui est vert. L'importance de la règle entière (à la fois la couleur et la taille de la police) est gérée par la spécificité du sélecteur.
!important
, cependant, est ajouté au niveau de la propriété, pas au niveau du sélecteur. Si, par exemple, nous avons utilisé cette règle:
button.highlight {
color: blue !important;
font-size: 1.5em;
}
alors la propriété color aurait une importance plus grande que la taille de la police. En fait, la couleur est plus importante que la couleur dans le sélecteur button#buyNow
, par opposition à la taille de la police (qui est toujours régie par l'ID standard en fonction de la spécificité de la classe).
Un élément <button class="highlight" id="buyNow">
aurait une taille de police de 2em
, mais une couleur blue
.
Cela signifie deux choses:
!important
, par exemple dans le sélecteur button#buyNow
.Cela rend non seulement vos feuilles de style beaucoup plus difficiles à maintenir et à déboguer, mais également à créer un effet Snowball. Un !important
mène à un autre pour le remplacer, à un autre encore pour le remplacer, et cetera. Il ne reste presque jamais avec un seul. Même si un !important
peut être une solution utile à court terme, il reviendra vous mordre dans le cul à long terme.
C’est la raison pour laquelle !important
a été inventé: donner à l’utilisateur le moyen de remplacer les styles de site Web. Il est très utilisé par les outils d’accessibilité tels que les lecteurs d’écran, les bloqueurs de publicité, etc.
En général, je dirais que c'est un cas d'odeur de code, mais parfois vous n'avez aucune option. En tant que développeur, vous devez avoir pour objectif d’avoir le plus de contrôle possible sur votre code, mais dans certains cas, vous avez les mains liées et vous devez travailler avec ce qui est présent. Utilisez !important
avec modération.
De nombreuses bibliothèques et frameworks sont livrés avec des classes utilitaires telles que .hidden
, .error
ou .clearfix
. Ils servent un seul but et appliquent souvent très peu de règles, mais très importantes. (display: none
pour une classe .hidden
, par exemple). Ceux-ci devraient remplacer tous les autres styles actuellement présents sur l'élément et justifier définitivement un !important
si vous me le demandez.
L'utilisation de la déclaration !important
est souvent considérée comme une mauvaise pratique car elle a des effets secondaires qui nuisent à l'un des mécanismes fondamentaux de CSS: la spécificité. Dans de nombreux cas, son utilisation pourrait indiquer une architecture CSS médiocre.
Il y a des cas dans lesquels c'est tolérable ou même préféré, mais assurez-vous de vérifier que l'un de ces cas s'applique réellement à votre situation avant de l'utiliser.
!important
force la déclaration à toujours s'appliquer, en procédant comme suit:
La plupart du temps, !important
peut être évité car la spécificité des sélecteurs détermine lequel prend effet, ce qui est l'idée de styles en cascade. Cependant, dans certaines situations (je ne me souviens pas exactement de la situation exacte), la spécificité n’est pas aussi logique et je dois forcer !important
sur la déclaration.
Raisons pour ne pas utiliser/éviter !important
?
!important
rend la lecture plus difficileJe pense qu'il est important que nous abordions à nouveau cette question, ici fin 2014, lorsque davantage de règles seront ajoutées au brouillon de travail, il est si important de ne pas imposer de restrictions à vos utilisateurs. J'ai écrit ce petit exemple pour expliquer un scénario possible dans lequel une telle chose se produit. Ceci est tiré d'un site Web REAL que j'ai visité sur le Web, et je le vois, malheureusement, le plus souvent.
Vous avez un site Web et votre site Web dépend du remplissage des formulaires et de la modification du texte. Pour essayer de minimiser la fatigue oculaire, essayez de choisir un style qui conviendra à tout le monde, et comme vos utilisateurs visitent principalement la nuit, vous décidez de rendre la couleur de fond blanche, puis de noircir la couleur du texte. . Le formulaire est vide par défaut, vous devez donc taper du texte (cette fois) pour vous assurer qu'il fonctionne:
...
background-color: black; /* I forgot important here, but it works fine on its own */
color: white !important;
...
Quelques mois plus tard , les utilisateurs se plaignent du fait que le blanc sur noir est trop difficile pour les yeux mais que l'autre moitié l'adore, que faites-vous? vous ajoutez un thème personnalisé qui utilise! important pour remplacer les styles internes afin que les DEUX parties soient heureuses, ce pour quoi il est SUPPOSÉ d'être utilisé:
...
background-color: white !important;
color: black !important;
...
Maintenant, qu'est-ce qui se passe ici? Qu'est-ce que vous attendiez . Si vous vous souvenez correctement des balises! Important du premier jeu, vous auriez remarqué que cela ne fonctionnait pas et vous vous êtes probablement rappelé que vous deviez supprimer les balises! Important. MAIS vous en avez oublié un ..
DROIT, vous obtenez un texte blanc sur un fond blanc et l'utilisateur ne peut plus lire votre page Web s'il tente d'utiliser ce nouveau style (en supposant que vous l'ayez conservé).
Bien sûr, vous ne le réalisez pas car la zone de texte est vide. Et vous supposez que cela fonctionnera! (L'assomption est le pire ennemi d'un développeur, elle est fière et arrogante).
Ainsi, la règle de base ne doit être utilisée que! Important lors de la conception de OVERRIDES avec un ensemble original complet de règles CSS. Rappelez-vous qu’il est destiné aux exceptions et perturbe l’ordre naturel et la signification des CSS en premier lieu. Dans la plupart des cas, vous n'aurez pas besoin de l'utiliser du tout.
Avec l'existence d'outils tels que des extensions et la présence de sites tels que 'userstyles.org' et son équivalent élégant, vous courez le risque d'aliéner vos utilisateurs en utilisant le tag! Important! Gardez à l'esprit que le style ne les remplacera pas.
Si vous utilisez! Important sur un style, assurez-vous de permettre à l'utilisateur de désactiver ce style (et je ne veux pas dire par le biais du commutateur interne "marche/arrêt" du navigateur Web). Et pour l'amour du ciel ne pas le faire par défaut.
Les internautes utilisent de moins en moins de style pour supprimer les annonces. Je ne pense donc pas que la protection des annonces avec! Important soit vraiment un problème. Cela ne fera qu'agacer quelqu'un qui essaie de personnaliser votre site.
Un peu tard à cette question mais il dit "peu importe les autres styles appliqués, ignorez-les et utilisez celui-ci". Vous trouverez peut-être un peu déroutant avec le !
infront (du !important
) car c’est un opérateur non en javascript, mais en css, il s’appelle un jeton de délimiteur qui indique simplement qu’il doit être prioritaire. Heres un exemple.
Sans !important
:
.set-color{
color: blue;
}
.set-color{
color: red;
}
sortiesROUGE
!important
sur l'attribut du bas (de même)
.set-color{
color: blue;
}
.set-color{
color: red !important;
}
sortiesROUGE(aurait été rouge de toute façon)
!important
sur l'attribut supérieur (de même)
.set-color{
color: blue !important;
}
.set-color{
color: red;
}
sortiesBLEU(dit ignorer le rouge, utiliser le bleu)
Pour moi, utiliser !important
est une mauvaise pratique CSS. Cela perturbe le flux naturel dans l'application des règles CSS où les propriétés sont appliquées de haut en bas. Avec !important
, la propriété donnera maintenant la priorité à la dernière valeur importante.
C'est comme utiliser le mot clé goto
dans les scripts. Bien que ce soit parfaitement légal, il vaut mieux l'éviter.
Je ne vous conseillerais pas de l'utiliser sauf si c'est une nécessité, ce qui peut parfois être le cas chez vous, car vous travaillez sur un projet existant. Mais essayez de vous en éloigner et d'utiliser le moins possible!
Le problème est que si vous en utilisez trop, l’un peut écraser l’autre par inadvertance. Votre code est également beaucoup moins lisible et quiconque s’en tient à vous pour le préserver va lui arracher les cheveux, car il est très pénible d’essayer de trouver.
Vérifiez ceci: http://webdesign.about.com/od/css/f/blcssfaqimportn.htm
Eh bien, je pense que l'utilisation de !important
est parfois "doit faire le travail" si vous voulez recouvrir les propriétés par défaut de wp-plugins.
Je l'ai utilisé seulement aujourd'hui et c'était le seul moyen de terminer mon travail… .. Ce n'est peut-être pas un bon moyen de faire quelque chose, mais c'est parfois le seul moyen de le faire.
Le problème avec !important
est qu’avec CSS
vous DEVEZ toujours éviter de sélectionner en profondeur (plus de priorité), car à l’avenir, vous ou une autre personne (souvent pour les grands projets) devrez les remplacer. styles SANS changer le style original et alors celui-ci aura une liberté limitée pour le faire. Il devra aussi utiliser !important
avec un sélecteur plus profond.
! important est un facteur, cela peut vaincre votre code pour quelque chose qui est remplacé
la ! cela ne signifie pas logique non pas, comme ici, cela devient déconcertant avec cela parmi ce code. ! important est souvent un problème colossal en informatique.
Par exemple si vous voulez le rendre display: block;
mais vous avez déjà défini display: none;
:
p {
display: none;
display: block !important /*Now overriden*/;
}
<p>Some Paragraph</p>
!important
est le mot clé le mieux évité. Quand l'utiliser, cela peut être un temps d'influence. Cliquez sur ce lien pour savoir quand utiliser!important
, ! important Style Rule - CSS-Tricks
pas de garance quoi