Проверяет понимание узких мест производительности рендеринга страницы и умение оптимизировать критический путь отрисовки.
Отрисовка страницы — это конвейер, который браузер проходит после получения HTML, CSS и JavaScript. Наиболее затратными этапами обычно являются layout (reflow) и paint, а также composite при работе с анимациями. Понимание этих этапов помогает оптимизировать интерфейсы.
Layout самый дорогой, потому что изменение одного элемента может потребовать пересчёта всей страницы. Например, изменение ширины контейнера заставляет браузер пересчитать позиции всех дочерних элементов.
offsetHeight, getBoundingClientRect() после записи — вызывает принудительный синхронный layout.width, top, left вместо transform и opacity.// Плохо: чередование чтения и записи вызывает reflow на каждой итерации
for (let i = 0; i < items.length; i++) {
items[i].style.width = items[i].offsetWidth + 10 + 'px';
}
// Хорошо: сначала читаем, потом пишем
const widths = items.map(el => el.offsetWidth);
items.forEach((el, i) => {
el.style.width = widths[i] + 10 + 'px';
});
Также дорого стоят большие изображения без указания размеров, сложные CSS-фильтры, box-shadow и blur, а также синхронные скрипты в <head>, блокирующие парсинг HTML.
Итог: для плавного интерфейса минимизируйте reflow, используйте transform и opacity для анимаций, выносите тяжёлые вычисления из критического пути и оптимизируйте ресурсы. Это особенно важно для мобильных устройств и слабых CPU.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию