๐ DOM(Document Object Model) ?
: XML๊ณผ HTML ๋ฌธ์์ ์ ๊ทผํ๊ธฐ ์ํ ์ธํฐํ์ด์ค.
Web API๋ก ๋ธ๋ผ์ฐ์ ์น ๋ฌธ์ ์กฐ์ํ ์ ์์.
๐ Web API?
API (web or XML page) = DOM + JS (scripting language)
์์)
const contentBox = document.querySelector('.contentBox');
document.style.backgroundColor = 'red';
const innerHeight = document.innerHeight;
DOM์ ๋ ธ๋๋ค ์ค์์ ํน์ ๋ ธ๋๋ฅผ ์ ํํ๊ณ , ์ ํํ ๋ ธ๋์ ์์ ๋ณ๊ฒฝํ๊ฑฐ๋ viewport์ ๋์ด๋ฅผ ์ฐพ๋ ๋ฑ DOM์ ์กฐ์ํ๋ ๋ฐ ์ฌ์ฉํ๋ ์คํธ๋ฆฝํธ ๋ฉ์๋๋ค์ Web API๋ผ๊ณ ํ๋ค. ์ด๋ฐ ๋ฉ์๋๋ค์ window ์ต์์ ๊ฐ์ฒด์ ๋ด๊ฒจ์ ธ ์๋ค.
๐ DOM์ ๊ฐ์ฒด ๊ตฌ์กฐ
: DOM์ ์๋ณธ HTML ๋ฌธ์์ ๊ฐ์ฒด ๊ธฐ๋ฐ ํํ ๋ฐฉ์์ด๋ฉฐ ๊ฐ์ฒด ๊ตฌ์กฐ๋ ๋ ธ๋ ํธ๋ฆฌ (ํ๋์ ๋ถ๋ชจ ์ค๊ธฐ๊ฐ ์ฌ๋ฌ๊ฐ์ ์์ ๋๋ญ๊ฐ์ง, ๋๋ญ์๋ค์ ๊ฐ์ง ์ ์๋ ๋๋ฌด์ ๊ฐ์ ๊ตฌ์กฐ)๋ก ํํ๋๋ค.
์์ )
<!DOCTYPE html>
<html lang="en">
<head>
<title> My first web page </title>
</head>
<body>
<h1> Hello, world! </h1>
<p> How are you? </p>
</body>
</html>
์ ๋ฌธ์๋ ์๋์ ๊ฐ์ ๋ ธ๋ ํธ๋ฆฌ๋ก ํํ ๋๋ค.
! DOM์ด HTML ๋ฌธ์๋ก๋ถํฐ ์์ฑ๋์ง๋ง ๊ฐ์ ๊ฐ๋ ์ ์๋.
๐ ๋ธ๋ผ์ฐ์ ๋ ๋๋ง ํ๋ฆ
*webkit ๋ ๋๋ง ์์ง ๊ธฐ์ค
1. ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์์ HTML๊ณผ ์ ์ ํ์ผ์ ๋ฐ์์จ๋ค.
2. ๋ ๋๋ง ์์ง์ด ๊ฐ์ ธ์จ HTML๊ณผ ์ ์ ํ์ผ์ ํ์ฑํ๋ค.
3. ๋ ๋๋ง ์์ง์ด ํ์ฑํ ํ์๋ HTML๊ณผ ์ ์ ํ์ผ ๊ฐ์๋ฅผ DOM Tree์ CSSOM Tree๋ก ๋ง๋ ๋ค.
4. ๋ ๋๋ง ์์ง์ด Attachment ํ ํ, Render Tree๋ฅผ ๋ง๋ ๋ค.
5. Layout์ Render Tree์ ์์๋ค์ ์ ๋ ฅ๋ style rule๋๋ก ๋ธ๋ผ์ฐ์ ์ viewport๋ด์ ๊ทธ๋ ค์ง ์์์ ํฌ๊ธฐ์ ์์น ๊ทธ๋ฆฌ๊ณ ๋ฐฐ์น๋ฅผ ๊ณ์ฐํ๋ค. *viewport : ๊ทธ๋ํฝ์ด ํ์๋๋ ๋ธ๋ผ์ฐ์ ์์ญ
6. Layout ์์ ์ด ๋๋ Render Tree๊ฐ ๋ ๋๋ง ์์ง์ ์ํด ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ๊ทธ๋ ค์ง๋ค.
โ ์ฌ์ฉ์๊ฐ ์์์ ์คํ์ผ์ ์ํฅ์ ์ฃผ๋ ์ก์ ์ด๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์์ผฐ์ ๊ฒฝ์ฐ
-> Layout๊ณผ Paint ์์ ์คํ ํ ๋ธ๋ผ์ฐ์ ์ ๋ณด์ด๊ฒ ๋จ.
โ ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝ์ํค๋ ์์ ์ด๋ ์์๋ฅผ ์ถ๊ฐํ๋ ์์ ์ ๋ฐ์์ํจ ๊ฒฝ์ฐ
-> DOM Tree๋ถํฐ ๋ค์ ๊ทธ๋ฆผ.
๊ฒฐ๋ก
1. HTML์ ์์ฑํ๋ฉด ๋จ์ํ ์ธ์ด์ผ ๋ฟ์ด๊ณ ๋ธ๋ผ์ฐ์ ์ ํด์์ ๊ฑฐ์ณ ๊ฐ์ฒด๋ก ๋ณํ๋ ๊ฑธ DOM์ด๋ผ๊ณ ํ๋ค.
(์น ์ฌ์ดํธ์์ F12 ๋๋ฅธ ๋ค Elementsํญ์ ๊ฐ๋ฉด ๋์ค๋ ์ฝ๋๋ค์ด DOM)
2. HTML๊ณผ DOM์ ๋ค๋ฅธ ๊ฐ๋ ์ด๋ค.
์ฐธ๊ณ
'Javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ์คํฌ๋ฆฝ์ ๊ฐ๊ณผ ์ฐธ์กฐ๊ฐ์ ์์ ๋ณต์ฌ์ ๊น์ ๋ณต์ฌ (0) | 2023.06.10 |
---|---|
Template literals ๊ตฌํ (1) - Selection๊ณผ Range (0) | 2023.02.07 |
ES6๋ก ๊น๋ํ ์ฝ๋ ๋ง๋ค๊ธฐ (2) | 2022.01.09 |
javascript function ๊ฐ๋ ๊ณผ ์ข ๋ฅ (0) | 2021.11.14 |
ํธ์ถ ์ค์ผ์ค๋ง setInterval, setTimeout | setInterval ํจ์ ์ฆ์ ์ข ๋ฃ (0) | 2021.11.10 |