🔍 inp.works

Layout synchrone forcé : lire la géométrie après une écriture dans le DOM

Ce qui se passe

Normalement, la mise en page se produit après la fin de votre JavaScript, une fois par frame. Mais si vous modifiez le DOM puis lisez immédiatement une propriété de mise en page — offsetWidth, scrollHeight, getBoundingClientRect(), getComputedStyle() — le navigateur doit s'arrêter et calculer la mise en page sur place, de façon synchrone, dans votre tâche, car la réponse dépend de votre modification en attente.

Une mise en page forcée est peu coûteuse sur une petite page. Sur un grand DOM, ou répétée dans une boucle (ce qui devient du layout thrashing), elle ajoute des centaines de millisecondes au gestionnaire.

Comment le reconnaître

Comment corriger

Problème

grid.style.width = next + "px"            // write: layout is now dirty
const rect = cell.getBoundingClientRect()  // read → forced synchronous layout

Correctif

const rect = cell.getBoundingClientRect()  // read first, layout is clean
grid.style.width = next + "px"             // write after; browser lays out
                                           // once, before the next paint
Analysez votre site gratuitement →
Advertise here