Ответ
Отрисовка DOM-дерева зависит от нескольких факторов:
- Размер DOM – чем больше элементов, тем дольше парсинг и рендеринг.
- Сложность CSS – глубокие селекторы и сложные стили замедляют отрисовку.
- Рефлоу (reflow) – изменение геометрии элементов (ширина, высота, позиция) вызывает пересчёт макета.
- Репинт (repaint) – изменение визуальных свойств (цвет, тень) без изменения макета.
- Оптимизации браузера – например,
will-changeилиtransform: translateZ(0)ускоряют рендеринг.
Пример плохой практики:
// Вызывает множественные рефлоуы
for (let i = 0; i < 100; i++) {
element.style.width = `${i}px`;
}
Лучше использовать requestAnimationFrame или batch-изменения.