한 화면에서 사용자가 요청한 페이지를 보여주는 창 이외에 컨트롤 할 수 있는 부분
ex) 주소 표시줄, 이전/다음 버튼, 새로고침, 북마크 등
사용자 인터페이스와 렌더링 엔진 사이에서 동작 제어
요청한 URI를 브라우저 엔진에게 받아와 서버에게 요청 → 통신
서버로 부터 받아온 데이터(HTML, CSS, JS)를 파싱한 후 렌더링
렌더링 엔진으로부터 받은 HTTP 요청을 받아 네트워크 처리 후 응답 값 전달
자바스크립트를 파싱 ex) chrome V8
render tree를 브라우저에 그리는 역할 담당
① 사용자 인터페이스에 URI 입력
② 브라우저 엔진으로 URI 전달
③ 렌더링 엔진은 해당 URI를 서버에게 요청
④ 네트워크 처리 후 렌더링 엔진으로 응답값(HTML, CSS, JS) 전달
⑤ 렌더링 엔진에서 HTML, CSS 파싱하고, 자바스크립트 해석기를 통해 JS 파싱
⑥ DOM 트리 조작이 완료되면, render object(render tree 구성요소)로 변함
⑦ UI 백엔드는 render object를 브라우저 렌더링 화면에 띄워줌
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="index.css" />
<title>Document</title>
</head>
<body>
<h1>Hello</h1>
<div>
<img
src="https://cdn.pixabay.com/photo/2015/06/19/21/24/avenue-815297_1280.jpg"
alt="img"
/>
<p>이미지</p>
</div>
<script src="main.js"></script>
</body>
</html>
html,
body {
min-height: 100vh;
padding: 20px;
}
h1 {
color: red;
font-size: 36px;
text-align: center;
font-weight: 800;
}
div {
width: 500px;
border: 2px solid red;
}
div img {
width: 100%;
}
div p {
font-size: 20px;
text-align: center;
color: green;
}
DOM 트리 + CSSOM 트리 → Attachment 과정(render object 생성)
display: none
등<html>
, <body>
는 렌더 트리 root로써 render view라고 부른다.Render Tree 배치
<html>
부터 시작하여 위부터 하나씩 DOM node 그림<head>
안에 있는 viewport 관련 meta 태그 내용 기준으로 각 HTML 요소들의 위치와 크기 계산💡 레이아웃에 영향을 주는 css 속성
position, left, top, right, bottom, width, height, margin, padding, border, border-width, display, float, overflow, font-family, font-size, font-weight, text-align, vertical-align,…
Render Tree 그리기
💡 페인트에 영향을 주는 css 속성
background, box-shadow, border-radius, border-style, color, outline, text-decoration
레이아웃이 다시 발생하는 경우
주로 요소의 크기나 위치가 바뀔 때, 브라우저 창의 크기가 바뀌었을 때 다시 발생
페인트부터 다시 발생되는 경우
주로 배경 이미지나 텍스트 색상, 그림자 등 레이아웃 수치를 변화시키지 않는 스타일 변경이 일어났을 때
→ 성능상으로 이점이 있음
레이어 합성만 다시 발생하는 경우
Layout과 Paint을 수행하지 않고 레이어의 합성만 발생
→ 성능상으로 가장 큰 이점 가짐
⇒ 렌더링 엔진마다 css 별로 업데이트 되는 시작점이 다름!
CSS Triggers List - What Kind of Changes You Can Make
Browser rendering process 1편 - Browser 구성 요소