Rendering
Last updated
Last updated
HTML์ ํ์ฑํด DOM ๋ ธ๋๋ก ๊ตฌ์ฑ๋ ํธ๋ฆฌ(DOM) ์์ฑ
CSS๋ฅผ ํ์ฑํด CSS ๋ ธ๋๋ก ๊ตฌ์ฑ๋ ํธ๋ฆฌ(CSSOM) ์์ฑ
DOM๊ณผ CSSOM ํธ๋ฆฌ๋ฅผ ๊ฒฐํฉํด ๋ ๋ ํธ๋ฆฌ ์์ฑ
๋ ๋ ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ ์ด์์/๋ฆฌํ๋ก์ฐ ๊ณผ์ ์คํ
๊ฐ ๋ ธ๋๋ฅผ ํ๋ฉด์ ํ์ธํ
๋ธ๋ผ์ฐ์ ์ ๋ ๋๋ง ์์ง์ด ๊ฐ์ฅ ๋จผ์ ์ํํ๋ ์์ ์ Document Object Model, DOM ํธ๋ฆฌ๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค. HTML ํ์ผ์ DOM ํธ๋ฆฌ๋ก ํ์ฑํ๋ ๊ณผ์ ์ ์ด 4๋จ๊ณ๋ก ๊ตฌ์ฑ๋๋ค.
๋ฐ์ดํธ ์ธ์ฝ๋ฉ: ๋์คํฌ ๋๋ ๋คํธ์ํฌ์์ HTML์ ์์ ๋ฐ์ดํธ๋ฅผ ์ฝ๊ณ , ํ์ผ์ ์ง์ ๋ ์ธ์ฝ๋ฉ ๋ฐฉ์(ex. UTF-8)์ ๋ฐ๋ผ ๋ณํํ๋ค.
ํ ํฐํ: ๋ณํ๋ ๋ฌธ์์ด์ HTML5 ํ์ค์ ๋ฐ๋ผ ๊ณ ์ ํ ํ ํฐ(ex. <html>
, <head>
)์ผ๋ก ๋ณํํ๋ค.
๊ฐ์ฒดํ: ๊ฐ ํ ํฐ์ ์์ฑ์ด ์ ์๋ ๊ฐ์ฒด๋ก ๋ณํํ๋ค.
DOM ๊ตฌ์ฑ: ์๋ณธ ๋งํฌ์ ์ ํฌํจ ๊ด๊ณ ๋ฑ์ ๊ณ ๋ คํด ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์์ฑํ๋ค.
์์ ์ฝ๋๋ HTML ํ์ผ์ ์์ ์ง์ ์ธ <html>
ํ๊ทธ๋ฅผ ์ ์ํ์ง ์์๊ณ , ๋ซ๋ ํ๊ทธ(</body>
, </p>
)๋ฅผ ์ง์ ํ์ง ์์๋ค. ์ด๋ ๋ฌธ๋ฒ์ ์ผ๋ก ํ๋ฆฐ ์ฝ๋์ด์ง๋ง, HTML ํ์๋ ์๋์ผ๋ก ๋ฌธ๋ฒ์ ๋ง๊ฒ ๋งํฌ์
์ ์์ ํ๋ค. ์์ ์ฝ๋๋ฅผ ๋ธ๋ผ์ฐ์ ์์ ์คํ์์ผฐ์ ๋์ ๋ชจ์ต์ด๋ค.
HTML ํ์ฑ ๊ณผ์ ์์ ๋ฐ๊ฒฌํ CSS ๋ํ HTML๊ณผ ์ ์ฌํ ํ์ฑ ๊ณผ์ ์ ๊ฑฐ์ณ CSSOM(CSS Object Model)์ ์์ฑํ๋ค. ์ด ์์ ์ DOM์ ์์ฑํ๋ ์์ ๊ณผ ๋ ๋ฆฝ์ ์ผ๋ก ์งํ๋๋ค.
CSSOM ์์ฑ ๊ณผ์ ์์๋, ๋ธ๋ผ์ฐ์ ์์ ๊ธฐ๋ณธ ์ ๊ณตํ๋ User Agent Stylesheet์ ๋ด์ฉ๊ณผ CSS ํ์ผ์ ์คํ์ผ์ ํฌํจํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ์ ์ผ๋ก ์ ์ฉ๋ ์คํ์ผ๋ถํฐ ์์ํด ๊ตฌ์ฒด์ ์ผ๋ก ์ ์ฉ๋ ์คํ์ผ๊น์ง ์ฌ๊ท์ ์ผ๋ก ํธ๋ฆฌ์ ๋ด์ฉ์ ๊ตฌ์ฑํ๋ค.
๋ ๋๋ง ์์ง์ DOM ํธ๋ฆฌ๊ฐ ์์ฑ๋ ์ดํ์, DOM ํธ๋ฆฌ์ CSSOM ํธ๋ฆฌ๋ฅผ ํฉ์ณ ๋ ๋ ํธ๋ฆฌ๋ฅผ ์์ฑํ๋ค. ๋ ๋๋ง ํธ๋ฆฌ ๊ตฌ์ฑ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
DOM ํธ๋ฆฌ์ ๋ฃจํธ์์๋ถํฐ ๋ ธ๋๋ฅผ ์ํํ๋ค.
ํ๋ฉด์ ํ์๋์ง ์๋ ๋
ธ๋๋ฅผ ์๋ตํ๋ค. (ex. display: none
, <script>
, <meta>
, ...)
ํ๋ฉด์ ํ์๋์ง ์๋ ๋ ธ๋๋ฅผ ์๋ตํ๊ธฐ ๋๋ฌธ์, DOM ํธ๋ฆฌ์ ๋ ๋ ํธ๋ฆฌ๋ 1:1์ผ๋ก ๋งค์นญ๋์ง ์์ ์ ์๋ค.
๋ ๋ ํธ๋ฆฌ๋ฅผ ์์ฑํ๋ ๊ณผ์ ์์ ๊ฐ ๋ ธ๋์ ์คํ์ผ์ ๊ณ์ฐํ์์ง๋ง, ์ค์ ๋๋ฐ์ด์ค์ ๋ทฐํฌํธ ๋ด์์์ ์์น์ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํ์ง๋ ์์๋ค. ์ด ๊ณผ์ ์ ๋ ์ด์์ ๋๋ ๋ฆฌํ๋ก์ฐ๋ผ ์นญํ๋ค.
๊ธ๊ผด ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฑ์ ์ ์ญ์ ์คํ์ผ ๋ณ๊ฒฝ, ๋ทฐํฌํธ ํฌ๊ธฐ๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ ๋ ๋ ํธ๋ฆฌ๋ฅผ ์ ์ฒด์ ์ผ๋ก ๋ค์ ์ํํ๋ฉฐ ์ ์ญ ๋ ์ด์์ ๊ณผ์ ์ ๊ฑฐ์น๋ค. ๊ทธ ์ธ์ ์คํ์ผ์ด ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ์๋ ๋น๋๊ธฐ์ ์ผ๋ก ์ฆ๋ถ ๋ ์ด์์์ ์คํํ๋ค. ์ฆ๋ถ ๋ ์ด์์์ ๋ณ๊ฒฝ๋์ด์ผ ํ๋ ๋ ธ๋์ ํํด ์คํ๋๋ค.
ํ์ธํ ๋จ๊ณ์์๋, ๋ ๋ ํธ๋ฆฌ์ ๋ ์ด์์ ๊ณผ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๋ ธ๋๋ฅผ ํ๋ฉด์ ์ค์ ๋ก ํ์ถํ๋ค. ๋ ์ด์์๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ํ์ธํ ๊ณผ์ ์๋ ์ ์ญ/์ฆ๋ถ ํ์ธํ ์ด ์กด์ฌํ๋ค. ์ฆ๋ถ ํ์ธํ ์์๋ ๋ณ๊ฒฝ๋์ด์ผ ํ๋ ๋ ธ๋์ ํํด ํ์ธํ ๊ณผ์ ์ ์ฌ์คํํ๋ค.
๋ ๋๋ง ์์ง์์ ์ํํ๋ ๋ชจ๋ ์ฐ์ฐ์ ๋ฆฌ์์ค๋ฅผ ์๊ตฌํ๋ค. ํนํ ๋ ์ด์์๊ณผ ํ์ธํ ๊ณผ์ ์ ๊ฒฝ์ฐ, ์์ฃผ ์ํ๋ ์ ์ฑ๋ฅ์ ์ผ๋ก ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
DOM์ ์ง์ ์ ์ผ๋ก ์กฐ์ํ๋ ๊ฒฝ์ฐ, ์ฆ์ ๋ฆฌ๋ ๋๋ง์ ์ด๋ํ๊ฒ ๋ ๊ฐ๋ฅ์ฑ์ด ์ปค์ง๋ค. ์๋ฅผ ๋ค์ด, for๋ฌธ์ ์ํํ๋ฉฐ ์๋ก์ด ๋ ธ๋๋ฅผ ์ถ๊ฐํ ๋ ์ํํ ํ์๋งํผ ๋ฆฌ๋ ๋๋ง์ด ๋ฐ์๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด React, Vue์ ๊ฐ์ ํ๋ก ํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๊ฐ์ DOM์ ๋ณ๊ฒฝํ๋ ๋ฐฉ์์ ํํ๋ค. ๋ณ๊ฒฝ์ฌํญ์ ๊ฐ์ DOM์ ๋ฐ์ํ๊ณ , DOM๊ณผ ๋น๊ตํ์ฌ ์ค์ ๋ก ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง DOM์ ๋ฐ์ํ๋ค.
HTML ํ์๋ ์ด๋ฏธ์ง, CSS ๋ฑ์ ๋
ผ๋ธ๋กํน ์์์ ๋ฐ๊ฒฌํ๋ฉด, ํด๋น ์์์ ์์ฒญํ๊ณ ๊ตฌ๋ฌธ ๋ถ์์ ๊ณ์ํ๋ค. ํ์ง๋ง <script>
ํ๊ทธ์ ๊ฒฝ์ฐ, ์ด ์ ์๋์ด ์์ง ์์ผ๋ฉด ๊ตฌ๋ฌธ ๋ถ์์ ๋ฉ์ถ๊ณ ํด๋น ์คํฌ๋ฆฝํธ๋ฅผ ํด์ํ๋ค. ํด์์ด ๋๋ ์ดํ์ ๋ค์ ๊ตฌ๋ฌธ ๋ถ์์ ์งํํ๋ค.
์ฝํ ์ธ ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๋ ๋ ํธ๋ฆฌ๋ฅผ ์์ฑํ๋ค.