새싹
브라우저 렌더링 파이프라인
#browser#performance#frontend#rendering
프론트엔드 개발자라면 반드시 알아야 하는 브라우저가 화면을 그리는 과정.
HTML을 받아서 픽셀로 그리기까지의 과정:
HTML → DOM → CSSOM → Render Tree → Layout → Paint → Composite
DOM 트리 생성: HTML을 파싱하여 Document Object Model 생성
<body>
<div class="container">
<p>Hello</p>
</div>
</body>
CSSOM 트리 생성: CSS를 파싱하여 CSS Object Model 생성
.container {
width: 100%;
}
p {
color: black;
}
DOM + CSSOM을 결합하여 실제로 화면에 그려질 요소만 포함하는 트리 생성.
display: none 요소는 제외됨visibility: hidden 요소는 포함됨 (공간 차지)각 요소의 정확한 위치와 크기를 계산한다.
비용이 큰 작업이다. 한 요소가 바뀌면 자식, 형제, 부모까지 영향을 줄 수 있다.
계산된 레이아웃을 실제 픽셀로 그린다.
여러 레이어를 합성하여 최종 화면을 만든다.
transform, opacity 등은 별도 레이어로 승격됨각 단계를 트리거하는 CSS 속성이 다르다:
| 속성 | Layout | Paint | Composite |
|---|---|---|---|
width, height | O | O | O |
background-color | - | O | O |
transform | - | - | O |
opacity | - | - | O |
핵심: 애니메이션에는 transform과 opacity만 사용하라.
자세한 내용은 CSS 애니메이션 성능 최적화 참고.
width, height, padding, margin, border)top, left, position)