Post

Reflow와 Repaint가 실행되는 시점

Reflow와 Repaint가 실행되는 시점

면접fe

ReflowRepaint 실행되는 시점

Image

  • 해당 작업은 렌더링과 연관된 작업.
  • 두 작업은 렌더링 방식의 Layout, Paint 단계가 다시 일어난다고 생각하면 됨.

Reflow란?

  • DOM의 레이아웃(위치, 크기 등)을 다시 계산하는 과정.
  • 이 때, 관련된 모든 HTML 요소의 수치를 다시 계산하여 렌더 트리를 재구축.
  • 관련 모든 요소들의 배치를 재계산하므로 성능 비용이 큼.

Repaint란?

  • Repaint의 재구축된 렌더 트리를 다시 그리는 과정
  • 레이아웃은 그대로, 시각적 속성의 요소를 다시 그리는 과정.
  • 뜻을 직역하여, Paint 단계가 다시 수행된다고 생각하면 됨.
  • 레이아웃 계산 없이, 픽셀만 다시 그리므로 비교적 성능 비용은 적음.

Reflow가 실행되는 시점

  • DOM 구조 변경(요소 추가/삭제)
  • CSS 스타일 추가, 삭제, 변경
  • 클래스 속성, 스타일 속성의 동적 변화 시
  • JavaScript를 통해 DOM 동적 변화 시
  • 요소에 대한 offsetWidthoffsetHeight(화면에 보여지는 좌표) 수치 계산 시.
  • CSS 애니메이션, 트랜지션.
  • 궁극적으로 레이아웃 변경 시, DOM 트리에 있는 다른 노드에 영향을 줌

Repaint가 실행되는 시점

  • 기본적으로, Reflow가 실행되면 그 뒤에 실행됨.
  • 시각적 속성의 요소 변경 시
  • 배경색(background-color) 변경
  • 글자색(color) 변경
  • visibility 변경
  • box-shadow, outline 등의 시각 효과 변경

ReflowRepaint를 줄이기 위한 노력

  • 인라인 형식의 스타일 작성 자제
  • 애니메이션 퀄리티와 Reflow 성능의 절충안을 고려
  • CSS에서의 JavaScript 표현식 사용 자제
  • 자주 사용하는 것은 캐싱

This post is licensed under CC BY 4.0 by the author.