브라우저가 HTML, CSS, Javascript등의 문서들을 화면에 실제 픽셀로 변환하는 동작을 말합니다.
브라우저가 HTML파일을 로드하고 나면 화면에 UI요소를 표시하기 위해 몇가지 변환과정을 거치게 됩니다.
HTMLElement
를 루트로 하여 HTML 각 태그와 속성 텍스트에 대해 노드를 생성하게 된다.다음 예시를 살펴보자.
<html>
<head>
<title>브라우저 렌더링</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<header>
<h1>DOM tree 생성</h1>
</header>
<main>
<h2>HTML 파싱</h2>
<p>v프로그래머스 데브코스</p>
</main>
<footer>
<small>Copyright 2021</small>
</footer>
</body>
</html>
위의 HTML 파일은 다음과 같이 DOM tree을 생성한다.
body {
font-size: 18px;
}
header {
color: plum;
}
h1 {
font-size: 28px;
}
main {
color: firebrick;
}
h2 {
font-size: 20px;
}
footer {
display: none;
}
뷰포트(viewport): 그래픽이 표시되는 브라우저의 영역, 일반적으로 모바일의 경우 디스플레이 너비, 웹의경우 브라우저 창의 너비와 동일
HTML 문서 내에 <meta name=""viewport content="width=devide-width">로 표시 되어 있음
CSS는 렌더링 차단요소 -> css파일을 로드, 파싱하여 CSSOM이 구성되기 전까지 렌더링이 차단
<head>
내부)<link href="style.css" rel="stylesheet" /> // ----- 1
<link href="print.css" rel="stylesheet" media="print" /> //------ 2
<link href="other.css" rel="stylesheet" media="(min-width: 40em)" /> //------- 3
HTML 파싱 도중 <script>
태그를 만나면 DOM생성을 중단하고 javascript가 실행되게 한 후 DOM생성을 재개한다.
단, CSSOM이 생성되지 않았다면 CSSOM이 생성될 때 까지 javascript 실행을 중지한다.
<body>
최하단에 위치한다.Website Performance Optimization
How the browser renders a web page? — DOM, CSSOM, and Rendering
Critical Rendering Path