๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT

๋ธŒ๋ผ์šฐ์ €์™€ ๋ Œ๋”๋ง ์—”์ง„: ์›น์˜ ํ•ต์‹ฌ ๋™์ž‘ ์›๋ฆฌ

by ๐Ÿ’ฒ๐ŸŽตโœ–๏ธโœ”๏ธโ˜ผ 2024. 2. 14.
728x90

๋ธŒ๋ผ์šฐ์ €์™€ ๋ Œ๋”๋ง ์—”์ง„: ์›น์˜ ํ•ต์‹ฌ ๋™์ž‘ ์›๋ฆฌ

1. ๋ธŒ๋ผ์šฐ์ €์˜ ๊ฐœ๋…

1.1 ๋ธŒ๋ผ์šฐ์ €๋ž€?

์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์›น ํŽ˜์ด์ง€๋ฅผ ์—ด๊ณ  ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์ž…๋‹ˆ๋‹ค. ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ๋น„๋””์˜ค ๋“ฑ์˜ ์›น ์ฝ˜ํ…์ธ ๋ฅผ ํ•ด์„ํ•˜์—ฌ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๊ณ , ์‚ฌ์šฉ์ž์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

1.2 ๋ธŒ๋ผ์šฐ์ €์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

  • HTML ํ•ด์„ ๋ฐ ํ‘œ์‹œ: ์›น ํŽ˜์ด์ง€์˜ HTML, CSS, JavaScript๋ฅผ ํ•ด์„ํ•˜์—ฌ ํ™”๋ฉด์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ ์ฒ˜๋ฆฌ: ์‚ฌ์šฉ์ž์˜ ํด๋ฆญ, ์ž…๋ ฅ ๋“ฑ์— ๋ฐ˜์‘ํ•˜์—ฌ ๋™์ ์ธ ํ–‰์œ„๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋„คํŠธ์›Œํฌ ํ†ต์‹ : ์›น ํŽ˜์ด์ง€๋ฅผ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ , ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

2. ๋ธŒ๋ผ์šฐ์ € ์—”์ง„

2.1 ๋ธŒ๋ผ์šฐ์ € ์—”์ง„์ด๋ž€?

๋ธŒ๋ผ์šฐ์ € ์—”์ง„์€ ๋ธŒ๋ผ์šฐ์ €์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„์œผ๋กœ, HTML ๋ฌธ์„œ์™€ CSS ์Šคํƒ€์ผ์„ ํ•ด์„ํ•˜์—ฌ ํ™”๋ฉด์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ๋ธŒ๋ผ์šฐ์ € ์—”์ง„์œผ๋กœ๋Š” Blink(Chrome, Edge), WebKit(Safari), Gecko(Firefox) ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

2.2 ๊ฐ ์—”์ง„์˜ ํŠน์ง•๊ณผ ์žฅ๋‹จ์ 

2.2.1 Blink ์—”์ง„

  • ์žฅ์ : ๋น ๋ฅธ ์„ฑ๋Šฅ, ์•ˆ์ •์„ฑ, Google Chrome๊ณผ Microsoft Edge์—์„œ ์‚ฌ์šฉ.
  • ๋‹จ์ : ๊ฐœ๋ฐœ์‚ฌ์˜ ๋…์ž์„ฑ์ด ๋– ์•ˆ์•„์งˆ ์šฐ๋ ค.

2.2.2 WebKit ์—”์ง„

  • ์žฅ์ : ์˜คํ”ˆ ์†Œ์Šค, ์•ˆ์ •์„ฑ, Safari ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉ.
  • ๋‹จ์ : ๋‹ค์†Œ ๋ณด์ˆ˜์ ์ธ ์—…๋ฐ์ดํŠธ ์ฃผ๊ธฐ.

2.2.3 Gecko ์—”์ง„

  • ์žฅ์ : ์˜คํ”ˆ ์†Œ์Šค, ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ, Firefox ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ.
  • ๋‹จ์ : ๋†’์€ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„.

3. DOM(Document Object Model)๊ณผ ๋ Œ๋”๋ง ๊ณผ์ •

3.1 DOM์ด๋ž€?

DOM์€ HTML, XML ๋ฌธ์„œ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค๋กœ, ๋ฌธ์„œ์˜ ๊ตฌ์กฐํ™”๋œ ํ‘œํ˜„์„ ์ œ๊ณตํ•˜์—ฌ JavaScript์™€ ๊ฐ™์€ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๊ฐ€ ๋ฌธ์„œ ๊ตฌ์กฐ, ์Šคํƒ€์ผ, ๋‚ด์šฉ ๋“ฑ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

3.2 DOM์˜ ๊ตฌ์กฐ

HTML ๋ฌธ์„œ๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ํ‘œํ˜„๋˜๋ฉฐ, ๊ฐ ์š”์†Œ๋Š” ๋…ธ๋“œ๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ๋…ธ๋“œ ๊ฐ„์˜ ๋ถ€๋ชจ-์ž์‹, ํ˜•์ œ ๊ด€๊ณ„ ๋“ฑ์„ ํ†ตํ•ด ๋ฌธ์„œ ๊ตฌ์กฐ๊ฐ€ ์ •์˜๋ฉ๋‹ˆ๋‹ค.

3.3 ๋ Œ๋”๋ง ๊ณผ์ •

  1. ๋ฌธ์„œ ํŒŒ์‹ฑ: ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ HTML ๋ฌธ์„œ๋ฅผ ๋ฐ›์•„ ํŒŒ์‹ฑํ•˜์—ฌ DOM ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  2. CSS ์Šคํƒ€์ผ๋ง: ๋ธŒ๋ผ์šฐ์ €๋Š” ํŒŒ์‹ฑ๋œ DOM ํŠธ๋ฆฌ์™€ ์—ฐ๊ฒฐ๋œ ์Šคํƒ€์ผ ์ •๋ณด(CSS)๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. ๋ ˆ์ด์•„์›ƒ: ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ ์š”์†Œ์˜ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
  4. ํŽ˜์ธํŒ…: ํ™”๋ฉด์— ํ‘œ์‹œํ•  ์˜์—ญ์„ ์ •ํ•˜๊ณ , ํŽ˜์ธํŒ… ์ž‘์—…์„ ํ†ตํ•ด ํ™”๋ฉด์— ๊ทธ๋ฆฝ๋‹ˆ๋‹ค.

3.4 ์˜ˆ์ œ ์ฝ”๋“œ๋กœ ์ดํ•ดํ•˜๊ธฐ

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
        body {
            background-color: #f0f0f0;
        }

        h1 {
            color: #333;
            text-align: center;
        }

        p {
            font-size: 18px;
            color: #666;
        }
    </style>


    <title>DOM and Rendering</title>
</head>
<body>
    <h1>Hello, DOM!</h1>
    <p>This is a simple example to understand DOM and rendering process.</p>
</body>
</html>

์œ„์˜ ์ฝ”๋“œ๋Š” ๊ฐ„๋‹จํ•œ HTML ๋ฌธ์„œ๋กœ, ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๋ฉด DOM๊ณผ ๋ Œ๋”๋ง ๊ณผ์ •์ด ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ง€๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ดˆ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

4. ๋งˆ๋ฌด๋ฆฌ

์ด๋ ‡๊ฒŒ ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ๋ Œ๋”๋ง ์—”์ง„, ๊ทธ๋ฆฌ๊ณ  DOM๊ณผ ๋ Œ๋”๋ง ๊ณผ์ •์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ•ต์‹ฌ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋ฉด ์›น ๊ฐœ๋ฐœ์— ๋” ๊นŠ์ด ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๊ณ , ๋ธŒ๋ผ์šฐ์ €์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜์—ฌ ํšจ์œจ์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€