본문 바로가기
개발이야기/Etc.

프론트엔드 개발자 면접 준비 - 렌더 트리(Render Tree) , 리플로우(Reflow), 페인트(Paint)

by hyung12 2024. 1. 10.
반응형

 

 

웹 개발자라면 브라우저의 동작 원리에 대한 이해가 중요합니다. 그 중에서도 리플로우(Reflow)는 웹페이지 렌더링 과정에서 자주 언급되는데, 이를 제대로 이해하기 위해서는 먼저 렌더 트리(Render Tree), 리플로우(Reflow), 페인트(Paint) 등의 개념을 확실히 이해해야 합니다.

 

1. 렌더 트리(Render Tree) 생성

웹페이지의 HTML과 CSS는 브라우저에 의해 렌더 트리로 변환됩니다. 렌더 트리는 화면에 표시되는 모든 요소를 가지고 있으며, 이를 생성하기 위해서는 각 요소의 크기와 위치를 계산해야 합니다. 이때 사용되는 것이 바로 Flow 작업입니다.

 

1.1 Flow 작업

Flow 작업은 렌더 트리를 생성하면서 각 요소의 높이와 너비 등을 계산하는 과정입니다. 브라우저는 HTML 문서를 파싱하여 스타일 규칙을 적용하고, 이를 바탕으로 렌더 트리를 구성합니다. Flow 작업은 이러한 과정에서 요소의 크기와 위치를 결정하는 단계입니다.

 

2. 리플로우(Reflow)

리플로우는 렌더 트리를 생성하는 과정에서 발생하는데, 한 번의 리플로우가 끝나면 렌더 트리가 완성됩니다. 그러나 문제는 사용자와 상호작용하면서 동적으로 변경되는 요소들이 많다는 점입니다. 이런 변경이 발생하면 해당 요소를 포함한 부분이 다시 Flow 작업을 거쳐 렌더 트리를 재생성해야 합니다. 이러한 과정이 리플로우입니다.

 

2.1 리플로우의 반복

리플로우는 최초 한 번만 실행되는 것이 아닌, 여러 번 반복해서 실행될 수 있습니다. 예를 들어, 한 요소의 크기가 변경되면 그 영향으로 다른 요소들의 크기나 위치도 변경될 수 있습니다. 이에 따라 브라우저는 변경된 부분을 감지하고 다시 리플로우를 실행합니다. 이러한 반복은 성능에 영향을 미칠 수 있으므로 최대한 최적화된 코드를 작성하는 것이 중요합니다.

 

3. 페인트(Paint)

렌더 트리가 생성된 후, 화면에 해당 요소들을 그리는 과정입니다. 즉, 브라우저는 각 요소의 스타일과 위치를 알고 있으며, 이 정보를 기반으로 화면에 실제로 픽셀을 채워 나가는 작업을 말합니다. 이는 사용자가 웹 페이지를 시각적으로 볼 수 있도록 하는 단계로, 페인트 작업을 최적화하는 것도 웹 페이지 성능 향상에 기여합니다.

 

4. 정리

브라우저의 동작 원리를 이해하기 위해서는 렌더 트리, 리플로우, 페인트 등의 개념을 숙지해야 합니다. Flow 작업은 렌더 트리를 생성하는 과정 중에서 각 요소의 크기와 위치를 결정하는데, 리플로우는 이 과정을 다시 반복하는 것을 의미합니다. 최적화된 코드 작성은 성능 향상에 중요하며, 효율적인 리플로우 관리는 웹 페이지의 렌더링 성능을 향상시키는 데 도움이 됩니다.

 

 

위 내용을 간략하게 정리한다면

렌더 트리를 생성하는 과정에서 요소의 크기와 위치를 계산하는 작업이 flow이며, 이를 다시 수행하는 것이 reflow입니다. Paint는 레이아웃(layout)과정에서 렌더링 엔진은 각 요소들의 크기와 위치를 계산하고, 이 정보를 토대로 각 요소의 모습을 결정합니다. 그리고 나서 이를 화면에 실제 픽셀로 그려주는 과정이고, 리플로우는 최초 한 번뿐 아니라 여러 차례 반복적으로 실행됩니다.

 

반응형