웹 브라우저가 HTML과 CSS를 받아와 화면에 출력하는 전체 과정은 다음과 같습니다:
정의
화면에 실제로 보이는 요소만을 포함한 트리 구조
display: none 요소는 포함되지 않음visibility: hidden은 포함됨 (보이지 않지만 공간 차지)정의
렌더 트리의 요소들의 위치와 크기(레이아웃)를 계산하는 과정
margin, padding, border, width, font-size 등의 변경offsetTop, scrollTop 같은 속성 접근 시 강제 발생정의
요소의 시각적 스타일이 바뀔 때 발생 (위치·크기 변화 없음)
color, background-color, box-shadow, visibility 등 변경| 구분 | 설명 | 예시 | 성능 영향 |
|---|---|---|---|
| 렌더 트리 | 보여질 요소들만 추린 트리 | DOM + CSSOM | - |
| 리플로우 | 레이아웃 계산 | width, margin, DOM 추가 등 | ❗ 큼 |
| 리페인트 | 시각적 요소 다시 그리기 | color, background-color 등 | 💡 중간 |
<p style="color: red; font-size: 16px;">Hello</p>
DOM 트리 생성: <p>Hello</p>
CSSOM 트리 생성: p { color: red; font-size: 16px }
렌더 트리 생성: p + 스타일 적용
리플로우: 폰트 크기 기준으로 p의 크기·위치 계산
리페인트: 빨간색 텍스트로 실제 화면에 그림