-
TIL-2024.03.28 - JS - Web Rendering - 페인팅 & 리페인팅> 기초/Javascript 2024. 3. 28. 20:25
질문:
- 페인트, 리페인트는 각각 무엇이고 차이점은 무엇인가?
- 이후, 어떤 작업이 발생하는가?
랜더트리 구성 이후 발생되는 일:
- 랜더링 과정 복습:
- HTML 문서와 CSS 스타일 시트를 파싱하여 각 요소에 적용되는 스타일을 결정하여 요소의 특성을 설정
(각 요소들의 우선순위, 상속, 선택자에 따라 최종적으로 적용되는 스타일이 결정)
- 레이아웃 | 리플로우 과정 복습:
- JS 코드에서 DOM이나 CSSOM을 변경하는 DOM API가 사용된 경우, DOM 이나 CSSOM이 변경.
- 변경된 DOM과 CSSOM은 다시 렌더 트리로 결합되고 변경된 렌더 트리를 기반으로 레이아웃 다시 계산
- 이렇게 만들어진 레이아웃에 그래픽을 입히는 작업 (화면에 요소를 그리는 과정)을 페인트 | 리페인트라 함
페인트:
- 그래픽을 새로 그리는 작업을 의미합니다.
- 요소의 스타일이 변경되었거나 새로운 요소가 추가되어 그래픽 요소를 생성하는 경우에 발생.
- e.g) 배경 색상이 변경되거나 텍스트의 내용이 업데이트되는 경우에 페인트가 발생.
- 요소의 레이아웃이 변경되지 않고 시각적인 변화만 있는 경우에 발생
리페인트(Repaint):
- 이미 화면에 그려진 요소의 그래픽을 다시 그리는 작업을 의미.
- 요소의 스타일이 변경되어 요소의 외관이 변경되었을 때 발생.
- e.g) 요소의 투명도가 변경되거나 가려져 있던 요소가 다시 보이게 되는 경우에 리페인트가 발생.
- 단지 요소의 스타일이 변경된 경우에 발생하므로, 리플로우보다 비용이 적음. (리페인트 < 리플로우)
차이:
- 페인트는 요소의 새로운 그래픽을 그리는 작업을 의미
- 리페인트는 이미 그려진 그래픽을 다시 그리는 작업을 의미.
- 이러한 작업들은 레이아웃 변경과는 관련이 있지만, 주로 요소의 스타일이 변경되었을 때 발생.
합성(Compositing):
- 합성 단계에서는 페인트 작업에서 생성된 그래픽들을 합성하여 최종 화면을 생성.
- 이 단계에서는 각 요소의 위치, 투명도, 불투명도 등을 고려하여 요소들을 겹치게 하거나 블렌딩.
- 또한, 각 요소의 레이어(Layer)를 합성하여 최종 화면을 생성.
- 이때 각 요소마다 하나의 레이어가 생성되지는 않을 수 있고, 여러 개의 요소가 하나의 레이어에 합성되기도함.
답변:
- 레이아웃 계산 | 리플로우 이후 대체 어떤 일이 발생하는가?
- 페인트 | 리페인트 - 페인트, 리페인트는 각각 무엇이고 차이점은 무엇인가?
- 화면에 요소를 그리는 과정으로, 초기에 그리는지 아니면 변경하는 것인지의 차이
'> 기초 > Javascript' 카테고리의 다른 글
TIL-2024.03.27 - JS - Web Rendering - 레이아웃 계산 & 리플로우 (0) 2024.03.28 TIL-2024.03.26 - Vue - Web Rendering & Vue 작용 (0) 2024.03.26 TIL-2024.03.25 - JS - 외부 객체와 내부 객체 (0) 2024.03.25 TIL-2024.03.24 - JS - 얕은 복사 & 깊은 복사 (0) 2024.03.24 TIL-2024.03.22 - JS - Closure (0) 2024.03.22