Je suis d'accord avec vous pour ne pas l'utiliser car c'est une mauvaise pratique, indépendamment des performances. Rien que pour cette raison, j'éviterais d'utiliser !important
dans la mesure du possible.
Mais sur la question de la performance : Non, ça ne devrait pas être perceptible. Il pourrait avoir un certain effet, mais il devrait être si minuscule que vous ne le remarquerez jamais, ni même que vous le remarquerez. devrait vous vous en inquiétez.
Si c'est suffisamment significatif pour être perceptible, alors vous avez probablement des problèmes plus importants dans votre code que la simple !important
. La simple utilisation d'un élément syntaxique normal des langages de base que vous utilisez ne posera jamais de problème de performance.
Laissez-moi répondre à votre question par une question rétorique en retour ; un angle que vous n'avez probablement pas considéré : De quel navigateur parlez-vous ?
Chaque navigateur possède évidemment son propre moteur de rendu, avec ses propres optimisations. La question est donc la suivante : quelles sont les implications en termes de performances dans chaque navigateur ? Peut-être !important
fonctionne mal dans un navigateur mais très bien dans un autre ? Et peut-être que dans les prochaines versions, ce sera l'inverse ?
Je pense que ce que je veux dire, c'est qu'en tant que développeurs web, nous ne devrions pas penser (ou avoir besoin de penser) aux implications en termes de performances des constructions syntaxiques individuelles des langages que nous utilisons. Nous devrions utiliser ces constructions syntaxiques parce que c'est le bon moyen de réaliser ce que nous voulons faire, et non pas en fonction de leurs performances.
Les questions relatives aux performances doivent être posées conjointement avec l'utilisation de profileurs afin d'analyser les points de blocage de votre système. Commencez par corriger les éléments qui vous ralentissent vraiment. Il est presque certain qu'il y a des problèmes bien plus importants à résoudre avant de descendre au niveau des constructions CSS individuelles.
0 votes
Je ne pense pas qu'il y ait de différence. C'est juste un autre élément de la clé de tri.
7 votes
Par curiosité, comment évaluez-vous les performances d'une feuille de style CSS ? Les meilleures CSS rendent plus vite ou quelque chose comme ça ?
0 votes
Vous pourriez évaluer les performances des sélecteurs (voir ici pour plus d'informations : stevesouders.com/blog/2009/03/10/ )
0 votes
Mais, à moins que vous ne disposiez d'un site TRES important, les performances du sélecteur ne seront probablement pas pertinentes. Le seul autre terme réel dans lequel vous pouvez mesurer ses performances est la taille des fichiers.
0 votes
C'est peut-être terriblement naïf, mais ne serait-ce pas plutôt l'inverse ? Je veux dire,
!important
empêcherait l'engin de rendu de chercher plus loin, et par conséquent, augmenterait les performances.4 votes
@Yoshi il doit encore chercher d'autres
!important
règles.0 votes
Et ce n'est même pas le moteur de rendu qui fait la résolution en cascade. Le moteur de rendu ne fait que dessiner.
0 votes
@BoltClock pas si vous incluez la résolution de style dans le moteur de rendu (qui est techniquement incorrecte).
0 votes
@JanDvorak par exemple, si
color
est en question, le premier avec!important
supprimerait la nécessité d'évaluer cette propriété plus avant.0 votes
@BoltClock moi utiliser moteur de rendu est juste l'ignorance de ne pas connaître un meilleur nom ;)
0 votes
@BoltClock : Vraiment ? Je suis surpris par cela. Ma supposition par défaut était que si deux règles sont
!important
qu'il utiliserait alors les arguments habituels pour les départager (c'est-à-dire la spécificité et le dernier en dernier ressort seulement). Avez-vous une référence de spécification à portée de main ou dois-je aller la chercher moi-même (j'ai juste pensé que si vous l'aviez déjà cherchée pour ce commentaire, cela m'aurait évité de devoir le faire).0 votes
@Chris : Ah oui, c'est exactement ça. Des choses comme la spécificité du sélecteur et l'endroit où il est déclaré (c'est-à-dire s'il est dans un style en ligne, dans une feuille de style interne ou dans une feuille de style externe) doivent également être prises en compte. Il se trouve que plusieurs déclarations importantes peuvent s'appliquer au même élément, comme des déclarations normales, et qu'elles sont donc soumises au même ordre en cascade, mais avec une priorité plus élevée. Désolé, je n'ai pas été très clair dans mon dernier commentaire !
0 votes
@BoltClock C'est ce que j'ai essayé d'insinuer. Après avoir pris soin de la spécificité, la première propriété avec
!important
supprimer le besoin de chercher plus loin *vers le haut*` (pour la même propriété qui pourrait avoir!important
) ?!0 votes
@BoltClock c'est plus intéressant à savoir que ma question initiale. Je l'ai ajoutée dans l'édition.
1 votes
@janw : Je viens de préciser qu'il choisit bien le plus spécifique... J'ai supprimé le commentaire trompeur.
0 votes
@Yoshi : C'est probablement dépendant de la mise en œuvre. En outre, une même règle peut avoir plus d'une
!important
pour la même propriété - le navigateur doit également en tenir compte.0 votes
@NullPointer,
[hidden] { display: none !important; }
ok, donc tu as dit généralement Mais je pense qu'il est plus important de montrer aux gens où se situe l'utilisation appropriée de l'outil, afin de disposer d'un contexte permettant de comprendre la pertinence de l'outil.0 votes
@NullPointer Lorsque certains plugins mettent du style en ligne, je dois remplacer les paramètres d'une manière ou d'une autre...
16 votes
Pensée aléatoire : Le titre serait beaucoup C'est plus drôle si c'est écrit : "Est-ce que !important est important ?"
60 votes
Je lis toujours !important comme 'pas important'.
0 votes
Non, c'est juste que ça craint. Frappez les gens avec un bâton jusqu'à ce qu'ils s'arrêtent. Ils sont trop paresseux pour se soucier des performances de toute façon.
0 votes
@Erik Reppen : On ne sait jamais...
0 votes
Penser aux performances sur le web, c'est presque comme penser à courir sans jambes.
0 votes
Je pense qu'il ne devrait être utilisé que pour remplacer les styles en ligne (faits par javascript). De plus, certains navigateurs accessibles ont des règles pour aider l'utilisateur qui pourraient ne pas fonctionner comme prévu à cause de l'importance de ces règles Essayez de rendre vos sélecteurs plus spécifiques et vous n'en aurez plus besoin !
0 votes
Voici une astuce (.class.class) que j'utilise pour ne pas utiliser !important (entre autres raisons) et qui semble échouer pour les ID dans IE. Toute contribution sera appréciée... stackoverflow.com/questions/25565928/
0 votes
Quelqu'un peut-il revoir ma réponse ?