Maison >interface Web >js tutoriel >Refusions et repeints en Javascript
Une redistribution (également appelée mise en page ou re-mise en page) se produit lorsque le navigateur recalcule la position, la taille et la disposition des éléments sur la page. Ce processus se produit chaque fois que la mise en page de la page change, par exemple lorsque des éléments sont ajoutés, supprimés, redimensionnés ou que leur visibilité change. C'est une opération plus complexe et plus longue
<div id="box" style="width: 100px; height: 100px; background-color: blue;"></div> <script> const box = document.getElementById('box'); // Triggering a reflow by changing width and height box.style.width = '200px'; box.style.height = '200px'; // Triggering a repaint by changing the background color box.style.backgroundColor = 'red'; </script>
Lorsque vous modifiez quelque chose qui affecte la mise en page de la page, le navigateur doit :
Si de nombreux éléments sont affectés par un seul changement, la redistribution peut être coûteuse et ralentir les performances de votre site.
Un repeindre (ou redessiner) se produit lorsque les propriétés visuelles d'un élément changent mais pas la mise en page. C’est moins cher qu’une redistribution car elle nécessite uniquement de mettre à jour l’apparence des éléments sans recalculer leur position ou leur disposition. Les repeintures se produisent après le recalcul de la mise en page (dans les cas où les deux sont nécessaires) ou lorsque des propriétés n'affectant pas la mise en page sont modifiées, comme la couleur ou la visibilité.
<div id="box" style="width: 100px; height: 100px; background-color: blue;"></div> <script> // Triggering a repaint by changing the background color box.style.backgroundColor = 'red'; </script>
Une repeinture n'implique pas de recalculer la mise en page, c'est donc plus rapide que la refonte, mais cela nécessite quand même de redessiner des parties de la page, ce qui prend un certain temps.
Minimiser la manipulation du DOM : utilisez des techniques telles que mises à jour groupées du DOM (comme mentionné précédemment) ou DocumentFragment pour apporter plusieurs modifications à la fois, au lieu de un par un.
Éviter le thrashing de la mise en page : Si vous lisez une propriété de mise en page (par exemple, offsetHeight) et écrivez immédiatement (modifiez la mise en page) dans le même cycle, cela force une redistribution, appelée mise en page. Pour éviter cela, séparez la lecture et l'écriture des propriétés DOM en différentes étapes.
<div id="box" style="width: 100px; height: 100px; background-color: blue;"></div> <script> const box = document.getElementById('box'); // Triggering a reflow by changing width and height box.style.width = '200px'; box.style.height = '200px'; // Triggering a repaint by changing the background color box.style.backgroundColor = 'red'; </script>
Utiliser les classes CSS : Au lieu de modifier les styles individuels, utilisez les classes CSS pour apporter des modifications. Le navigateur gère le changement de classe plus efficacement.
<div id="box" style="width: 100px; height: 100px; background-color: blue;"></div> <script> // Triggering a repaint by changing the background color box.style.backgroundColor = 'red'; </script>
Réduisez la complexité du CSS : évitez les éléments profondément imbriqués et les règles CSS trop complexes qui peuvent déclencher des reflows.
Utilisez visibilité : masquée au lieu d'affichage : aucune lorsque vous souhaitez simplement masquer un élément sans affecter la mise en page. display : aucun déclenche une refusion, tandis que visibilité : caché déclenche uniquement une repeinture.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!