Встречается на собеседованиях • сегодня
Какие знаешь способы оптимизации Relayout
- Избегайте частых изменений стилей – группируйте изменения DOM или используйте
requestAnimationFrameдля батчинга. - Используйте
transformиopacity– они не вызывают relayout, т.к. работают на compositor layer. - Минимизируйте чтение layout-свойств (offsetWidth, getComputedStyle) после изменений – это вызывает принудительный синхронный layout (layout thrashing).
- CSS Containment – свойство
contain: strictизолирует элемент, ограничивая область пересчета layout. - Debounce/resize observers – для обработки событий
resizeилиMutationObserver.
Пример:
javascript
// Плохо – вызывает multiple layouts
for (let i = 0; i < items.length; i++) {
items[i].style.width = newWidth + 'px';
console.log(items[i].offsetHeight); // Форсирует relayout!
}
// Лучше – batch changes
requestAnimationFrame(() => {
const heights = [];
for (let i = 0; i < items.length; i++) {
items[i].style.width = newWidth + 'px';
}
// Чтение свойств после всех изменений
for (let i = 0; i < items.length; i++) {
heights.push(items[i].offsetHeight);
}
});
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы