🔍 inp.works

Layout sincrono forzato: leggere la geometria dopo aver scritto nel DOM

Cosa succede

Normalmente il layout avviene dopo che il tuo JavaScript finisce, una volta per frame. Ma se cambi il DOM e poi leggi immediatamente una proprietà di layout — offsetWidth, scrollHeight, getBoundingClientRect(), getComputedStyle() — il browser deve fermarsi e calcolare il layout proprio lì, in modo sincrono, dentro il tuo task, perché la risposta dipende dalla tua modifica in sospeso.

Un layout forzato è economico su una pagina piccola. Su un DOM grande, o ripetuto in un ciclo (che diventa layout thrashing), aggiunge centinaia di millisecondi al gestore.

Come riconoscerlo

Come risolverlo

Problema

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

Soluzione

const rect = cell.getBoundingClientRect()  // read first, layout is clean
grid.style.width = next + "px"             // write after; browser lays out
                                           // once, before the next paint
Scansiona il tuo sito gratis →
Advertise here