Вопрос проверяет понимание разницы между Repaint и Reflow в браузере и знание CSS-свойств, влияющих на производительность рендеринга.
Когда браузер отрисовывает страницу, он проходит несколько этапов: построение DOM, CSSOM, дерева рендеринга, расчёт геометрии (Layout/Reflow) и отрисовка пикселей (Paint/Repaint). Некоторые CSS-свойства затрагивают только внешний вид элемента, не меняя его размеры или положение — они вызывают только Repaint. Другие изменяют геометрию, что приводит к пересчёту Layout (Reflow) и последующему Repaint.
// Вызывает только Repaint
element.style.color = 'red';
element.style.backgroundColor = 'blue';
// Вызывает Reflow + Repaint
element.style.width = '200px';
element.style.height = '100px';
element.style.margin = '10px';Для оптимизации производительности анимаций и частых изменений стилей (например, в играх или drag-and-drop) следует избегать свойств, вызывающих Reflow. Используйте transform и opacity — они обрабатываются на уровне композиции и не вызывают ни Reflow, ни Repaint.
Вывод: Знание этой разницы помогает писать быстрые интерфейсы, особенно при работе с анимациями и динамическими изменениями DOM. Для максимальной производительности отдавайте предпочтение transform и opacity.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
JavaScript
CSS
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию