🔍 inp.works

Layout síncrono forzado: leer geometría después de escribir en el DOM

Qué ocurre

Normalmente el layout ocurre después de que tu JavaScript termina, una vez por frame. Pero si cambias el DOM y de inmediato lees una propiedad de layout — offsetWidth, scrollHeight, getBoundingClientRect(), getComputedStyle() — el navegador debe detenerse y calcular el layout ahí mismo, de forma síncrona, dentro de tu tarea, porque la respuesta depende de tu cambio pendiente.

Un layout forzado es barato en una página pequeña. En un DOM grande, o repetido en un bucle (lo que se convierte en layout thrashing), añade cientos de milisegundos al manejador.

Cómo reconocerlo

Cómo solucionarlo

Problema

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

Solución

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