Notice
Recent Posts
Recent Comments
Link
ยซ   2024/12   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

Lennon FE

๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ •(1) - DOM, CSSOM๊ณผ ๋ Œ๋” ํŠธ๋ฆฌ ๋ณธ๋ฌธ

๐Ÿง‘‍๐Ÿ’ป Web/Browser

๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ •(1) - DOM, CSSOM๊ณผ ๋ Œ๋” ํŠธ๋ฆฌ

Lennon 2021. 11. 19. 00:46
728x90
๋ฐ˜์‘ํ˜•

๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ •

 

1. ๋ธŒ๋ผ์šฐ์ €๋Š” HTML, CSS, JS, IMG๋“ฑ ๋ Œ๋”๋ง์— ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ requestํ•˜๊ณ  ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ response ๋ฐ›๋Š”๋‹ค.

 

2. ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต๋œ HTML, CSS๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ DOM๊ณผ CSSOM์„ ์ƒ์„ฑํ•˜๊ณ  ๊ฒฐํ•ฉํ•ด ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

 

3. ๋ธŒ๋ผ์šฐ์ €์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต๋œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํŒŒ์‹ฑํ•ด ์‹คํ–‰ํ•œ๋‹ค. ์ด๋•Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š”

   DOM API๋ฅผ ํ†ตํ•ด DOM์ด๋‚˜ CSSOM์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ณ , ๋ณ€๊ฒฝํ•˜๋ฉด ๋‹ค์‹œ ๋ Œ๋” ํŠธ๋ฆฌ๋กœ ๊ฒฐํ•ฉ๋œ๋‹ค.

 

4. ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ HTML์˜ ๋ ˆ์ด์•„์›ƒ์„ ๊ณ„์‚ฐํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์— HTML์š”์†Œ๋ฅผ ํŽ˜์ธํŒ…ํ•œ๋‹ค.

 

 

๋ธŒ๋ผ์šฐ์ €์˜ ํ•ต์‹ฌ๊ธฐ๋Šฅ์€ ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๊ณ  ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‘๋‹ต๋ฐ›์•„ ๋ธŒ๋ผ์šฐ์ €์— ๋ Œ๋”๋ง ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

์ข€๋” ๊นŠ๊ฒŒ ๋“ค์–ด๊ฐ€๋ณด์ž.

 

 

์ˆœ์ˆ˜ ๋ฌธ์ž์—ด๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆœ์ˆ˜ํ•œ HTML ๋ฌธ์„œ๋ฅผ ๋ธŒ๋ผ์šฐ์ €์— ๋ Œ๋”๋ง ํ•˜๋ ค๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค.

 

HTML ํŒŒ์‹ฑ๊ณผ DOM ์ƒ์„ฑ

<!DOCTYPE html>
<html lang="en">
<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>Document</title>
</head>
<body>
    <p>Hello JavaScript!</p>
</body>
</html>

์˜ˆ๋ฅผ ๋“ค์–ด ํ•ด๋‹น HTML๋ฌธ์„œ๊ฐ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š” ์ง€ ์•Œ์•„๋ณด์ž.

 

1. ์„œ๋ฒ„๋Š” ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์š”์ฒญํ•œ HTMLํŒŒ์ผ์„ ์ฝ์–ด ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•œ ๋‹ค์Œ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ ๋ฐ”์ดํŠธ๋ฅผ ์ธํ„ฐ๋„ท์„ ๊ฒฝ์œ ํ•ด ์‘๋‹ตํ•œ๋‹ค. ex) 0101010101010110101010101101010101010

 

2. ๋ธŒ๋ผ์šฐ์ €๋Š” HTML ๋ฌธ์„œ๋ฅผ 2์ง„์ˆ˜ ํ˜•ํƒœ๋กœ ์‘๋‹ต ๋ฐ›๊ณ , 2์ง„์ˆ˜ ํ˜•ํƒœ์˜ HTML๋ฌธ์„œ๋Š” metaํƒœ๊ทธ์˜ charset ์†์„ฑ์— ์˜ํ•ด UTF-8์„ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋œ๋‹ค. 

ex) ์œ„์— ์ž‘์„ฑํ•œ html ์ฝ”๋“œ

 

3. ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋œ HTML ๋ฌธ์„œ๋ฅผ ์ฝ์–ด ๋“ค์—ฌ ๋ฌธ๋ฒ•์  ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š” ์ฝ”๋“œ์˜ ์ตœ์†Œ ๋‹จ์œ„์ธ ํ† ํฐ์œผ๋กœ ๋ถ„ํ•ดํ•œ๋‹ค.

 

4. ๊ฐ ํ† ํฐ๋“ค์„ ๊ฐ์ฒด๋กœ ๋ณ€ํ•œํ•˜์—ฌ ๋…ธ๋“œ๋“ค์„ ์ƒ์„ฑํ•œ๋‹ค. ์ด ๋…ธ๋“œ๋“ค์€ DOM์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ ์š”์†Œ๊ฐ€ ๋œ๋‹ค.

ex) html, head, meta, title, body, p ...

 

5. HTML ์š”์†Œ๋Š” ์ค‘์ฒฉ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ์š”์†Œ๊ฐ„์˜ ๋ถ€์ž ๊ด€๊ณ„๋ฅผ ๋ฐ”๋…•ํ•ด ๋ชจ๋“  ๋…ธ๋“œ๋“ค์„ ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑํ•œ๋‹ค. 

์ด ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ DOM์ด๋ผ ๋ถ€๋ฅธ๋‹ค.

 

์œ„์—์„œ ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ JS์—์„œ DOM์„ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋ฐ˜์˜๋˜์–ด ๋ Œ๋”ํ•œ๋‹ค.

 

 

CSS ํŒŒ์‹ฑ๊ณผ CSSOM ์ƒ์„ฑ

 

HTML์— CSS๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” link ํƒœ๊ทธ๋‚˜ style ํƒœ๊ทธ๋ฅผ ๋งŒ๋‚˜๋ฉด DOM ์ƒ์„ฑ์„ ์ผ์‹œ ์ค‘๋‹จํ•œ๋‹ค.

๊ทธ ํ›„ CSSํŒŒ์ผ์ด๋‚˜ style ํƒœ๊ทธ ๋‚ด์˜ CSS๋ฅผ HTML๊ณผ ๋™์ผํ•œ ํŒŒ์‹ฑ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉฐ ํ•ด์„ํ•˜์—ฌ CSSOM์„ ์ƒ์„ฑํ•œ๋‹ค.

 

 

๋ Œ๋” ํŠธ๋ฆฌ ์ƒ์„ฑ

DOM๊ณผ CSSOM์ด ์ƒ์„ฑ๋์œผ๋ฉด ๋ธŒ๋ผ์šฐ์ €์— ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด ๋ Œ๋” ํŠธ๋ฆฌ๋กœ ๊ฒฐํ•ฉ๋œ๋‹ค.

๋ Œ๋” ํŠธ๋ฆฌ๋Š” ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์— ๋ Œ๋”๋ง ๋˜์ง€ ์•Š๋Š” ๋…ธ๋“œ๋“ค์€ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค. ex) metaํƒœ๊ทธ, scriptํƒœ๊ทธ

์ดํ›„ ๋ Œ๋” ํŠธ๋ฆฌ๋Š” HTML์š”์†Œ์˜ ๋ ˆ์ด์•„์›ƒ์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์— ๋ Œ๋”๋งํ•˜๋Š” ํŽ˜์ธํŒ… ์ฒ˜๋ฆฌ์— ์ž…๋ ฅ๋œ๋‹ค.

 

์ฃผ์˜) ๋ฐ˜๋ณตํ•ด์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ์ง€๋งŒ ์„ฑ๋Šฅ์— ์•…์˜ํ–ฅ์„ ์ฃผ๋ฏ€๋กœ ๋ฆฌ๋ Œ๋”๋ง์ด ๋นˆ๋ฒˆํžˆ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผํ•œ๋‹ค.

 

 

 

๋‹ค์Œ ํฌ์ŠคํŒ…์€ JavaScript๋กœ DOM์„ ๋™์ ์œผ๋กœ ์กฐ์ž‘ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋Š” ์ง€ ์ ์–ด์•ผ๊ฒ ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
Comments