PassFront
  1. PassFront
  2. База знаний
  3. Производительность в JS

Какие свойства вызывают reflow?

Производительность в JS

Reflow вызывают свойства, влияющие на геометрию: размеры (`width`, `height`), отступы (`margin`, `padding`), позиционирование (`top`, `left`), `display`, `font-size`, а также чтение геометрии (`offsetHeight`).

Свойства, вызывающие reflow

Размеры

width, height, min/max-width/height, border, padding, margin — меняют размер элемента → пересчёт layout.

Позиционирование

top, left, right, bottom, position — меняют расположение.

Отображение и поток

display, float, clear, overflow — меняют участие в потоке.

Текст и шрифты

font-size, font-family, line-height, text-align, white-space — влияют на размеры текста.

Структура DOM

  • Добавление/удаление элементов.
  • Изменение содержимого, влияющего на размеры.
  • Изменение размера окна, шрифтов.

Чтение геометрии (принудительный reflow!)

Чтение этих свойств вынуждает синхронный reflow:

element.offsetHeight;
element.offsetWidth;
element.getBoundingClientRect();
element.scrollTop;
getComputedStyle(element);

Что НЕ вызывает reflow

  • color, background, box-shadow, visibility → только repaint.
  • transform, opacity → только composite (ни reflow, ни repaint)! Поэтому их используют для анимаций.

Как минимизировать

  • Анимировать transform/opacity.
  • Группировать чтения и записи DOM (избегать layout thrashing).
  • Менять классы, а не отдельные стили.

Коротко для собеседования

Reflow вызывают свойства геометрии: размеры (width/height/margin/padding/border), позиция (top/left/position), display/float/overflow, шрифты (font-size/line-height), изменение DOM. Плюс чтение геометрии (offsetHeight, getBoundingClientRect) — принудительный reflow. Не вызывают: color/background (repaint), transform/opacity (composite — для анимаций).

Другие вопросы раздела