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

Что такое repaint?

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

Repaint (перерисовка) — это перерисовка браузером пикселей элемента при изменении его внешнего вида без изменения геометрии (размеров и позиций).

Когда происходит repaint

  • Изменение color, background, visibility.
  • Изменение box-shadow, outline, border-color.
  • Любое визуальное изменение, не меняющее расположение элементов.
/* Вызовет repaint, но не reflow */
.box { background: red; }

Repaint против reflow

  • Reflow — пересчёт геометрии (размеры/позиции), затем обязательно repaint. Дороже.
  • Repaint — только перерисовка пикселей без изменения layout. Дешевле reflow, но тоже не бесплатно.

Порядок: reflow → repaint → composite. Repaint может произойти без reflow, но reflow всегда влечёт repaint.

Самый дешёвый путь — composite

Свойства transform и opacity при аппаратном ускорении меняются на этапе composite, минуя layout и paint:

/* Дёшево: только composite, без repaint/reflow */
.box { transform: translateX(10px); opacity: 0.5; }

Поэтому анимации делают через transform/opacity.

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

Repaint — перерисовка пикселей при изменении внешнего вида (цвет, фон, тень) без изменения геометрии. Дешевле reflow, но не бесплатен. transform/opacity идут ещё дешевле — на этапе composite, минуя paint.

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