mason
mason-log.

mason

mason.

안녕하세요. mason 입니다.

browser

Reflow와 Repaint.

Layout(Reflow), Paint, Composite 트리거와 최소화 전략

  • Reflow (Layout): 요소 기하(크기, 위치) 재계산 — 비용 큼
  • Repaint: 기하는 같고 픽셀만 다시 그림 — Reflow보다 가벼움
  • Composite: 레이어 합성만 — 가장 가벼운 편

📐 (예시) Reflow 트리거

리플로우 리페인트 컴포지트 무효화 경로

  • width, height, margin, padding, border 변경
  • DOM 추가/삭제, 텍스트 변경
  • getComputedStyle, offsetWidth레이아웃 읽기 (forced sync layout)
  • 창 resize, 폰트 로드

🖌️ (예시) Repaint만 트리거

  • color, background, visibility, outline
  • Reflow 없이 색/스타일만 바뀔 때

🧩 (예시) Composite-friendly

  • transform, opacity (새 레이어로 승격될 수 있음)
  • will-change (남용 금지 — 메모리 증가)

💡 최소화 팁

  • 레이아웃 읽기/쓰기 batch (read → write 분리)
  • 애니메이션은 transform + opacity
  • DocumentFragment로 DOM 일괄 삽입
  • position: fixed 요소는 다른 Reflow와 분리되는 경우 많음

🔗 참고 자료