브라우저 렌더링 과정
- 파싱(Parsing): DOM Tree, CSSOM Tree 구성
- 스타일(Style): DOM Tree, CSSOM Tree 를 기반으로 Render Tree를 생성
- 레이아웃(Layout): Render Tree의 각 노드들의 위치, 크기, 너비 등 배치 계산
- 그리기(Paint): Render Tree를 순회하며 레이어를 만들고 의 각 노드들을 실제 픽셀로 변환하여 그림
- 합성(Composite): 그려진 레이어들을 순서에 맞게 합성하여 실제로 보는 화면을 만듦
reflow & repaint
- reflow: 레이아웃 과정부터 다시 렌더링을 수행함
- reflow 발생하는 속성: width, height, display 등
- repaint: 페인트 과정부터 다시 렌더링을 수행함
- repaint 발생하는 속성: background-image, background-position, background-repeat 등
CSS 애니메이션 최적화 방법
- reflow, repaint 과정 최소화하기
- ‘메인스레드 점유 여부’가 성능을 결정하는 중요한 요소 중 하나임
- reflow, repaint 과정은 모두 메인 스레드를 점유하며, 이 과정이 자주 반복되면 페이지의 성능을 저하시킬 수 있음
- transform, opacity, cursor, orphans, perspective 등의 속성은 메인 스레드를 점유하지 않고 합성(Composite) 단계에서 렌더링을 할 수 있어 성능을 저하시키는 것을 막을 수 있음
- will-change css 속성 사용하기
- 3D Transform 사용하기
- 부모 요소의 영향을 받지 않으면서 독자적으로 애니메이션 구현이 가능함
- 메인쓰레드를 점유하지 않아 성능을 저하시키지 않음
- 3차원 공간을 표현 가능해 보다 복잡하고 사실적인 애니메이션 구현이 가능함
댓글남기기