브라우저 렌더링 과정을 단계별로 설명할 수 있나요?
HTML·CSS를 화면 픽셀로 바꾸는 브라우저의 렌더링 파이프라인(DOM·CSSOM·렌더 트리·레이아웃·페인트·합성)을 정리합니다.
브라우저는 받은 HTML·CSS·JS를 여러 단계를 거쳐 화면의 픽셀로 그립니다. 이 과정을 크리티컬 렌더링 패스(Critical Rendering Path) 라고 합니다.
단계별 흐름
- DOM 구성 — HTML을 파싱해 노드 트리인 DOM(Document Object Model) 을 만듭니다.
- CSSOM 구성 — CSS를 파싱해 스타일 규칙 트리인 CSSOM(CSS Object Model) 을 만듭니다. CSS는 렌더 차단 리소스입니다.
- 렌더 트리(Render Tree) — DOM과 CSSOM을 결합해, 화면에 보이는 노드와 계산된 스타일만 담은 트리를 만듭니다.
display: none요소는 제외됩니다. - 레이아웃(Layout / Reflow) — 각 노드의 정확한 위치와 크기(기하 정보) 를 뷰포트 기준으로 계산합니다.
- 페인트(Paint) — 텍스트·색·테두리·이미지 등 실제 픽셀을 칠합니다. 여러 레이어로 그려질 수 있습니다.
- 합성(Composite) — 페인트된 레이어들을 올바른 순서로 합쳐 최종 화면을 만듭니다(GPU 활용).
HTML → DOM ┐
├→ 렌더 트리 → 레이아웃 → 페인트 → 합성 → 화면
CSS → CSSOM ┘
JavaScript의 개입
<script> 는 기본적으로 파서를 차단하고, DOM·CSSOM을 수정할 수 있습니다. 그래서 위치·async/defer가 렌더링 타이밍에 영향을 줍니다. CSSOM이 완성되기 전 실행되는 스크립트는 CSSOM을 기다리기도 합니다.
리플로우 · 리페인트
- 리플로우(Reflow) — 크기·위치 변경처럼 레이아웃을 다시 계산(비용 큼).
- 리페인트(Repaint) — 색상 등 레이아웃에 영향 없는 시각 변경만 다시 그림.
transform·opacity변경은 레이아웃·페인트를 건너뛰고 합성 단계만 처리될 수 있어 성능에 유리합니다.
네트워크 관점(요청부터 응답까지)은 렌더링을 네트워크 관점에서 보기에서 다룹니다. 이 문서는 받은 자원을 화면으로 그리는 단계에 집중합니다.
브라우저 렌더링 파이프라인의 순서로 옳은 것은?
이 레슨을 다 읽으셨나요?
완료 표시는 이 브라우저에 저장됩니다.