๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ๋ก๋ถํฐ HTML ์๋ต(response)์ ๋ฐ์ ํ๋ฉด์ ๊ทธ๋ฆฌ๊ธฐ ์ํด ์คํํ๋ 6๋จ๊ณ์ ๊ณผ์
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>CRP์ ๋ํด ๋ฐํํ๊ฒ ์ต๋๋ค</title>
<link rel="stylesheet" href="./style.css" />
<script defer src="./main.js"></script>
</head>
<body>
<form>
<input type="text" placeholder="๋ฐํ๋ฅผ ํ๋ ค๋ ๋จ๋ฆฌ๋๊ตฐ์" />
<button>
๋ฒํผ
</button>
</form>
</body>
</html>
๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ url์ ์
๋ ฅํ๊ณ ์ํฐํค๋ฅผ ์น๋ฉด ํด๋น ์๋ฒ์ ์์ฒญ
(request)์ ๋ณด๋ด๊ฒ ๋๋ค. ์๋ต
(response)๋ฅผ ๋ฐ์ผ๋ฉด ์์ ๊ฐ์ HTML๋ฌธ์๋ฅผ ๋ฐ์์ค๊ฒ ๋๊ณ , ์ด๊ฑธ ํ๋ํ๋ ํ์ฑ
(parsing)ํ๊ธฐ ์์ํ๋ฉด์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ๊ณผ์ ์ด ์์ํ๋ค. ์ด๋ ๊ฒ ํ๋ฉด์ผ๋ก ๊ทธ๋ฆฌ๊ธฐ๊น์ง ๋ธ๋ผ์ฐ์ ๋ ์ค์ ๋ ๋๋ง ๊ฒฝ๋ก
(CRP:Critical Rendering Path)๋ฅผ ๊ฑฐ์ณ ์์
์ ์งํํ๋ค.
์ค์ ๋ ๋๋ง ๊ฒฝ๋ก์ ๊ฐ ๋จ๊ณ๊ฐ ์ต๋ํ ํจ์จ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋๋ก ๋ง๋ค๋ฉด(=์ต์ ํ
) * ์ด๊ธฐ ์ปจํ
์ธ ๋ฅผ ํ๋ฉด์ ๋น ๋ฅด๊ฒ ๋ ๋๋งํ ์ ์๋ค. ๋ฟ๋ง ์๋๋ผ ํ์ด์ง ์ด๊ธฐ ๋ ๋๋ง ์ดํ UI ์ํ๊ฐ ๋ณํ๋๋ฉด ์ ํ๋ก์ธ์ค์ ์ ์ฒด ํน์ ์ผ๋ถ๋ฅผ ๊ฑฐ์ณ ํ๋ฉด์ด ๊ทธ๋ ค์ง๊ฒ ๋๋ฏ๋ก, CRP๋ฅผ ์๊ฐํด ์ฝ๋๋ฅผ ์์ฑํ๋ค๋ฉด ํ๋ฉด ์
๋ฐ์ดํธ ์๊ฐ๋ ์ค์ผ ์ ์๋ค.
<html>
์ StartTag:html
๋ก, </html>
์ EndTag:html
๋ก ๋ณํ๋๋ค. ๊ฐ ํ ํฐ๋ค์ ๊ฐ์ฒด๋ก ๋ณํํ์ฌ DOM์ ๊ตฌ์ฑํ๋ ๊ธฐ๋ณธ ์์์ธ ๋
ธ๋๋ฅผ ์์ฑํ๋ค. StartTag:html
์ด ๋ค์ด์์ผ๋ฉด html๋
ธ๋๋ฅผ ๋ง๋ค๊ณ EndTag:html
์ ๋ง๋๊ธฐ ์ ๊น์ง ๋ค์ด์ค๋ ํ ํฐ๋ค์ html ๋
ธ๋์ ์์ ๋
ธ๋๋ก ๋ฃ๋ ์์ผ๋ก ๋ณํ์ด ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์, ์ด ๊ณผ์ ์ด ๋๋๋ฉด tree ๋ชจ์์ DOM
์ด ์์ฑ๋๊ฒ ๋๋ค.ํ ํฐ: ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋ฌธ๋ฒ์ ์๋ฏธ๋ฅผ ๊ฐ๋ ์ฝ๋์ ์ต์ ๋จ์.
๋
ธ๋: HTML DOM์์ ๊ณ์ธต์ ๋จ์๋ก, ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ณณ.
HTML์ CSS๋ฅผ ์ฐ๊ฒฐํ๋ link ํ๊ทธ๋ style ํ๊ทธ๋ฅผ ๋ง๋๋ฉด DOM ์์ฑ์ ์ผ์ ์ค๋จํ๋ค. CSS ํ์ฑ์ CSS ํน์ฑ์ ์์ ๋
ธ๋๋ค์ด ๋ถ๋ชจ ๋
ธ๋์ ํน์ ์ ๊ณ์ํด์ ์ด์ด๋ฐ๋๋ค๋(cascading) ๊ท์น์ด ์ถ๊ฐ๋๋ค๋ ๊ฒ์ ๋นผ๊ณ ๋ HTML๊ณผ ๋์ผํ ํ์ฑ๊ณผ์ ์ ๊ฑฐ์น๋ฉฐ ํด์ํ์ฌ CSSOM
์ ์์ฑํ๋ค. *
๋ธ๋ผ์ฐ์ ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์๋ฒ๋ก๋ถํฐ ์๋ต๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์ฑํด ์คํํ๋ค. ์ด ๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ DOM API๋ฅผ ํตํด DOM์ด๋ CSSOM์ ๋ณ๊ฒฝํ ์ ์๊ณ , ๋ณ๊ฒฝํ๋ฉด ๋ค์ ๋ ๋ ํธ๋ฆฌ๋ก ๊ฒฐํฉ๋๋ค.
CSSOM๊น์ง ๋ชจ๋ ๋ง๋ค์์ผ๋ฉด ,DOM+CSSOM์ ํฉ์ณ์ Render Tree
๋ฅผ ๋ง๋ ๋ค. ์ต์์ doucment๋ถํฐ ๊ฐ ๋
ธ๋๋ฅผ ์ํํ๋ฉด์ ๊ฐ๊ฐ์ ๋
ธ๋์ ๋ง๋ CSSOM์ ์ฐพ์์ ๊ท์น์ ์ ์ฉํด, ์ฝํ
์ธ ๋ฐ ๊ณ์ฐ๋ ์คํ์ผ
๊ณผ ํจ๊ป ๋ด๋ณด๋ธ๋ค. Render Tree๋ DOM Tree์ ์๋ ๊ฒ๋ค ์ค์์ ํ๋ฉด์ ์ค์ ๋ก '๋ณด์ด๋'
์น๊ตฌ๋ค๋ง ๋ณด์ฌ์ค๋ค.๊ทธ๋์ ํ๋ฉด์ ๋ณด์ด์ง ์๋ <meta>
ํ๊ทธ, display:none
๊ฐ์ ์์ฑ์ ๊ฐ์ง ์์๋ ๋ ๋์ ๊ด๊ณ๊ฐ ์๊ธฐ ๋๋ฌธ์ ํฌํจ์ํค์ง ์๋๋ค. *
์๋ฆฌ๋จผํธ๊ฐ ํ๋ฉด์์ ์ผ๋ง๋งํผ์ ๊ณต๊ฐ์ ์ฐจ์งํ๊ณ ์ด๋์ ์์นํด์ผ ํ๋์ง์ ๋ํ ์ ๋ณด๋ฅผ
๊ณ์ฐ
ํ๋ ๋จ๊ณ
์์ Render Tree์๋ ๋
ธ๋์ ๋
ธ๋์ ์คํ์ผ๋ง ๊ณ์ฐ๋์ด ์๋ค. ์๊ฐ ์ด๋ป๊ฒ ์๊ฒจ์ผ ํ๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง, ํ์ฌ ๋ณด์ด๋ ๋ทฐํฌํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค์ ๋ก ๋์ผ๋ ค๋ฉด ์๊ฐ ์ด๋๋ก ๊ฐ์ผํ๋์ง
๋ ๊ณ์ฐ์ ํด์ผํ๋ค. CSS box model์ ๋ฐ๋ผ์ ํ
์คํธ๋ ์์์ ๋ฐ์ค๊ฐ ํ๋ฉด์์ ์ฐจ์งํ๋ ์์ญ์ด๋ ์ฌ๋ฐฑ, ์ด์ธ์ ์คํ์ผ ์์ฑ์ด ๊ณ์ฐ๋๋ค. ์ด ๊ณผ์ ์์ ์ถ์์ ์ธ ๊ณ์ฐ์(%,vh,vw ๋ฑ)์ ์ธก์ ๊ฐ๋ฅํ ํฝ์
๋จ์๋ก ๋ณํ๋๋ค. ์ด๋ก์จ ๋
ธ๋์ ๊ณ์ฐ๋ ์คํ์ผ ๊ทธ๋ฆฌ๊ณ ํ๋ฉด ๋ด์์ ๊ฐ ๋
ธ๋์ ์ ํํ ์์น
๋ฅผ ์ป๊ฒ ๋๋ค.
์๋ฆฌ๋จผํธ์ ์์,์ด๋ฏธ์ง,ํ ๋๋ฆฌ,๊ทธ๋ฆผ์ ๋ฑ ์๊ฐ์ ์ธ ์์๋ฅผ
๊ทธ๋ฆฌ๋
๋จ๊ณ
์๋ฐ์คํฌ๋ฆฝํธ, CSS, ์น ์ ๋๋ฉ์ด์ ์ ์ฌ์ฉํ์ฌ ์๊ฐ์ ๋ณ๊ฒฝ์ ์ํํ๋ฉด ์ฃผ์ด์ง ํ๋ ์์ ๋ํด ์ฒ๋ฆฌ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์๋ 3๊ฐ์ง ์ค ํ๋์ ํ๋ก์ธ์ค๋ฅผ ์ํํ๊ฒ ๋๋ค.
์ฃผ๋ก ์์์ ํฌ๊ธฐ๋ ์์น๊ฐ ๋ฐ๋ ๋, ํน์ ๋ธ๋ผ์ฐ์ ์ฐฝ์ ํฌ๊ธฐ๊ฐ ๋ฐ๋์์ ๋ ๋ค์ ๋ฐ์ํ๋ค. (height,width,left,top,font-size,line-height ๋ฑ). ๋ณด์ด๋ ์์๋ค์ ๋ณํจ์์ผ๋ฏ๋ก Render Tree๋ ๊ทธ๋๋ก์ธ ์ํ์์ ๋ ์ด์์ ๋จ๊ณ๋ง ๋ค์ ๊ฑฐ์ณ ์์น
๋ฅผ ๊ณ์ฐํด์ ๊ทธ๋ฆฌ๊ฒ ๋๋ค. ๊ทธ๋ฌ๊ณ ๋์ paint,๋ ์ด์ด๋ฅผ ํฉ์ฑํ๋ composite๊น์ง ์ผ์ด๋๋ค.
์์น๊ฐ์ ์ํฅ์ ์ฃผ์ง ์๋ CSS ๊ฐ๋ค์ ์์ ํ๊ฒ ๋๋ฉด ๊ทธ๋ฅ ๊ธฐ์กด์ ๋ง๋ค์ด๋ ๋ ๋ํธ๋ฆฌ๋ฅผ ์ฌํ์ฉํ ์ ์๊ฒ ๋๋ค. ์ฃผ๋ก ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๋ ํ ์คํธ ์์, ๊ทธ๋ฆผ์ ๋ฑ ๋ ์ด์์์ ์์น๋ฅผ ๋ณํ์ํค์ง ์๋ ์คํ์ผ์ ๋ณ๊ฒฝ์ ์๋ฏธํ๋ค.(background-color,color,visibility,text-decoration ๋ฑ)
paint ๋จ๊ณ๊น์ง ๋๋์ด ์๋ ๋ ์ด์ด๋ค์ ํ๋์ ํ๋ฉด์ผ๋ก ํฉ์ณ์ ์ค์ ํ๋ฉด์ ๋ํ๋ด๋ ๊ณผ์ ์ด๋ค. ์์ ์ธ๊ธํ ๋ ์ด์์๊ณผ ํ์ธํ ์ ์ฌ๋ฌ ๋ ์ด์ด๋ก ๋๋์ด ์์ ์ด ์ด๋ฃจ์ด์ง๋๋ฐ(์์ ๋งฅ๋ฝ, Stacking Context ex.z-index) ์ต์ข ์ ์ผ๋ก ์ด๊ฒ๋ค์ ํ๋์ ๊ฒฐ๊ณผ๋ฌผ๋ก ํฉ์น๋ ๊ณผ์ ์ด ํ์ํ๋ค. ์ด๋ฌํ ๋ ์ด์ด๊ฐ ์์๋ฅผ ๋ฐ์ ธ ํ๋์ ํ๋ฉด์ผ๋ก ํฉ์ฑํ๋ฉด ๋ชจ๋ ๊ณผ์ ์ด ๋ง๋ฌด๋ฆฌ๋๋ค.
์๋ฅผ ๋ค์ด opacity๊ฐ ๋ณ๊ฒฝ๋๋ค๋ฉด ์น ํด์ง ์์์ ๋ฐ๊ฟ ํ์์์ด ๋ ์ด์ด๋ฅผ ํฉ์ฑํ๋ ๊ณผ์ ์์์ ๋ณ๊ฒฝ๋ง ์ผ์ด๋๋ฉด ๋๋ค. ํ์ฌ opacity,transform๋ง composite์ ํธ๋ฆฌ๊ฑฐํ๋ CSS ์์ฑ์ด๋ค.
์ฐธ๊ณ ์ฌ์ดํธ
Jang Jae Won
eommoonjoo.log
jKey๋์ ๋ฒจ๋ก๊ทธ
์ฌ์ฌ์ฒ ๋์ ๋ธ๋ก๊ทธ
Miso๋์ ๋ธ๋ก๊ทธ
khys๋์ ํฐ์คํ ๋ฆฌ