🔍 inp.works

Wymuszony synchroniczny layout: odczyt geometrii po zapisie do DOM

Co się dzieje

Normalnie układ następuje po zakończeniu Twojego JavaScriptu, raz na klatkę. Ale jeśli zmienisz DOM, a następnie natychmiast odczytasz właściwość układu — offsetWidth, scrollHeight, getBoundingClientRect(), getComputedStyle() — przeglądarka musi się zatrzymać i policzyć układ w tym miejscu, synchronicznie, w Twoim zadaniu, bo odpowiedź zależy od Twojej oczekującej zmiany.

Jeden wymuszony układ jest tani na małej stronie. Na dużym DOM lub powtarzany w pętli (co staje się layout thrashing) dodaje obsłudze setki milisekund.

Jak rozpoznać

Jak naprawić

Problem

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

Poprawka

const rect = cell.getBoundingClientRect()  // read first, layout is clean
grid.style.width = next + "px"             // write after; browser lays out
                                           // once, before the next paint
Przeskanuj swoją stronę za darmo →
Advertise here