2017-09-27 4 views
4

A travers un interesting video sur les performances de rendu de débogage dans Chrome devtools. Dans sa leçon, Umar identifie le changement d'une classe CSS sur la balise html comme source d'un goulot d'étranglement de rendu. Devtools montre que la modification de cette classe affecte potentiellement les 3 874 éléments du DOM en dessous de html et déclenche une opération coûteuse recalculate style.Est-ce que plusieurs classes sur la balise html affectent toujours les performances de rendu?

Dans le passé, j'ai ajouté des classes CSS à mes balises html ou body comme moyen pratique d'exprimer l'état de la page à ce niveau.

Votre CMS peut le faire dans le même but. Par exemple, dans un site WordPress, vous pouvez voir un tas de classes comme post-template-default single single-post postid-99999 single-format-standard logged-in category-news subcategory-uk has-hover sur la balise body d'un message.

Faut-il éviter cette pratique? Ou cela affectera-t-il seulement les performances de rendu lorsque les classes sont utilisées dans les règles CSS?

+3

Je ne sais pas quel est le problème. Le problème de performance est causé par la re-peinture nécessaire de la page. Donc, s'il n'y a pas de re-peinture, il n'y a pas de problème. –

+0

Différentes méthodologies CSS comme BEM, par exemple, utilisent ce modèle, et personne n'a dit à propos de la performance d'empiler plus de 1 classe dans une ligne. – Nicholas

+0

Merci @MrLister, je pense que je comprends - si il n'y a pas de règles CSS relatives à une classe, et que je change la classe sur la balise html, le navigateur ne tentera pas de recalculer les styles. Je suppose que le point important de la vidéo d'Umar est que cela peut être coûteux quand il y a des règles CSS affectées par une classe sur une balise en haut du DOM. –

Répondre

0

Cela ne devrait affecter les performances que si vous avez appliqué des styles CSS. Les vendeurs de navigateurs passent beaucoup de temps à essayer d'assurer des performances de premier ordre, ainsi les règles CSS sont traitées afin qu'elles puissent être analysées très efficacement pour les changements de rendu nécessaires ... et même lors de leur application essaie d'optimiser les changements qui causent refusion en cascade.

+0

Merci @ scunliffe, cela semble être la réponse - nous avons seulement besoin de s'inquiéter de ces classes si elles ajoutent des règles CSS. –