브라우저 랜더링 Reflow와 Repaint

브라우저 구조

Alt 그림1. browser_architecture

Reflow와 Repaint은 렌더링 엔진에서 일어난다

렌더링 엔진

렌더링 과정

Alt 그림2. browser_renderring

HTML을 파싱해 DOM 트리를 구성한다.

<html>
  <head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="app.css">
  </head>
  <body>
    <p>
        안녕
        <span>친구</span>
    </p>
    <div> 
      <img src="sample.png" alt="sample" height="100" width="100">
    </div>
  </body>
</html>

Dom 트리 구조

Alt 그림3. dom_tree

CSSOM 트리 구성

body { 
  font-size: 16px;
}

p { 
  font-weight: bold; 
}

span { 
  color: red; 
}

p span { 
  display: none; 
}

img { 
  float: right; 
}

CSSOM 트리 구조

Alt 그림4. cssom_tree

랜더링 트리

Alt 그림4. render_tree

렌더 트리 레이아웃

리플로우 발생 요소

렌더 트리 페인팅

크롬 개발자 도구를 통해 랜더 과정 확인

Alt 그림5. dev_tool_

Google의 리플로우를 최소화하는 데 도움이 되는 간단한 가이드라인

기억해두고 나중에 잊지말고 최적화 이슈에 적용하자