Web

๐ŸŒŸ ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ •: ๋ˆˆ์— ๋ณด์ด๋Š” ์›น์˜ ๋งˆ๋ฒ•! ๐Ÿง™‍โ™€๏ธ

xeunnie 2025. 3. 9. 01:00
728x90
๋ฐ˜์‘ํ˜•

๐ŸŒŸ ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ •: ๋ˆˆ์— ๋ณด์ด๋Š” ์›น์˜ ๋งˆ๋ฒ•! ๐Ÿง™‍โ™€๏ธ

 

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›นํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ๊ณผ์ •์€ ๋งˆ์น˜ ๋งˆ๋ฒ•๊ณผ๋„ ๊ฐ™์Šต๋‹ˆ๋‹ค. HTML, CSS, JavaScript๋กœ ์ด๋ฃจ์–ด์ง„ ์ฝ”๋“œ๊ฐ€ ๋ˆˆ์•ž์˜ ์•„๋ฆ„๋‹ค์šด UI๋กœ ๋ณ€ํ™˜๋˜๊ธฐ๊นŒ์ง€, ๋ธŒ๋ผ์šฐ์ € ๋‚ด๋ถ€์—์„œ๋Š” ๋งค์šฐ ๋ณต์žกํ•œ ์ž‘์—…์ด ์ผ์–ด๋‚˜๋Š”๋ฐ์š”. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ •์„ ํ•œ ๊ฑธ์Œ์”ฉ ํŒŒํ—ค์ณ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ•ต๏ธ‍โ™‚๏ธ

 

1. ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง์ด๋ž€?

 

๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง์€ HTML, CSS, JavaScript๋ฅผ ํ•ด์„ํ•˜์—ฌ ํ™”๋ฉด์— ๋ณด์ด๋Š” ์›นํŽ˜์ด์ง€๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ๋ Œ๋”๋ง ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นฉ๋‹ˆ๋‹ค:

1. HTML ํŒŒ์‹ฑ → DOM ์ƒ์„ฑ

2. CSS ํŒŒ์‹ฑ → CSSOM ์ƒ์„ฑ

3. DOM + CSSOM → Render Tree ์ƒ์„ฑ

4. ๋ ˆ์ด์•„์›ƒ(Layout) → ๊ฐ ์š”์†Œ์˜ ํฌ๊ธฐ์™€ ์œ„์น˜ ๊ณ„์‚ฐ

5. ํŽ˜์ธํŒ…(Painting) → ์š”์†Œ๋“ค์„ ํ”ฝ์…€๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ™”๋ฉด์— ๊ทธ๋ฆผ

6. ์ปดํฌ์ง€ํŒ…(Compositing) → ์—ฌ๋Ÿฌ ๋ ˆ์ด์–ด๋ฅผ ์กฐํ•ฉํ•ด ์ตœ์ข… ํ™”๋ฉด ๊ตฌ์„ฑ

 

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

 

๐Ÿ“œ 2.1 HTML ํŒŒ์‹ฑ๊ณผ DOM ์ƒ์„ฑ

 

HTML ํŒŒ์ผ์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ•ด์„ํ•˜์—ฌ **DOM(Document Object Model)**์ด๋ผ๋Š” ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

1. ๋ธŒ๋ผ์šฐ์ €๋Š” HTML์„ ํ•œ ์ค„์”ฉ ์ฝ์–ด๊ฐ‘๋‹ˆ๋‹ค.

2. HTML ํƒœ๊ทธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํŠธ๋ฆฌ ๊ตฌ์กฐ์˜ DOM์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

3. DOM์€ ๊ฐ ํƒœ๊ทธ๋ฅผ **๋…ธ๋“œ(Node)**๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

์˜ˆ์‹œ

 

<!DOCTYPE html>

<html>

  <body>

    <h1>Hello, World!</h1>

    <p>Welcome to the web.</p>

  </body>

</html>

 

DOM ํŠธ๋ฆฌ

 

- html

  โ”œโ”€โ”€ head

  โ””โ”€โ”€ body

      โ”œโ”€โ”€ h1

      โ””โ”€โ”€ p

 

๐ŸŽจ 2.2 CSS ํŒŒ์‹ฑ๊ณผ CSSOM ์ƒ์„ฑ

 

CSS ํŒŒ์ผ์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ•ด์„ํ•˜์—ฌ **CSSOM(CSS Object Model)**์ด๋ผ๋Š” ๋˜ ๋‹ค๋ฅธ ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.

1. HTML์—์„œ <style> ํƒœ๊ทธ๋‚˜ ์™ธ๋ถ€ CSS ํŒŒ์ผ์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” CSS๋ฅผ ํŒŒ์‹ฑํ•ฉ๋‹ˆ๋‹ค.

2. CSS ๊ทœ์น™๋“ค์„ ๊ณ„์ธต ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜ํ•ด CSSOM์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

 

์˜ˆ์‹œ

 

body {

  font-size: 16px;

}

h1 {

  color: blue;

}

 

CSSOM ํŠธ๋ฆฌ

 

- body { font-size: 16px }

- h1 { color: blue }

 

๐ŸŒณ 2.3 Render Tree ์ƒ์„ฑ

 

Render Tree๋Š” DOM๊ณผ CSSOM์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‹ค์ œ๋กœ ํ™”๋ฉด์— ํ‘œ์‹œํ•  ์š”์†Œ๋“ค์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

1. DOM๊ณผ CSSOM์„ ์กฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.

2. display: none๊ณผ ๊ฐ™์ด ํ™”๋ฉด์— ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ์š”์†Œ๋Š” Render Tree์—์„œ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.

3. ๊ฐ ์š”์†Œ์˜ ์Šคํƒ€์ผ์„ ํฌํ•จํ•œ ํ™”๋ฉด ํ‘œ์‹œ ์ •๋ณด๊ฐ€ Render Tree์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

 

๐Ÿ“ 2.4 Layout ๋‹จ๊ณ„ (Reflow)

 

**๋ ˆ์ด์•„์›ƒ(Layout)**์€ Render Tree๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ ์š”์†Œ์˜ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

1. ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ทฐํฌํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐ ์š”์†Œ์˜ ์œ„์น˜์™€ ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

2. ๋ถ€๋ชจ ์š”์†Œ์— ๋”ฐ๋ผ ์ž์‹ ์š”์†Œ์˜ ๋ ˆ์ด์•„์›ƒ๋„ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

 

์˜ˆ์‹œ

 

<div style="width: 50%; height: 100px;">

  <p style="margin: 10px;">Hello</p>

</div>

 

div์˜ ๋„ˆ๋น„: ๋ธŒ๋ผ์šฐ์ € ์ฐฝ ๋„ˆ๋น„์˜ 50%

p์˜ ์œ„์น˜: ๋ถ€๋ชจ div์—์„œ 10px ์•„๋ž˜๋กœ ๋–จ์–ด์ง

 

๐Ÿ–Œ๏ธ 2.5 Painting ๋‹จ๊ณ„

 

ํŽ˜์ธํŒ…(Painting)์€ Layout ๋‹จ๊ณ„์—์„œ ๊ณ„์‚ฐ๋œ ์š”์†Œ๋ฅผ ํ”ฝ์…€๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ™”๋ฉด์— ๊ทธ๋ฆฌ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

1. ๋ฐฐ๊ฒฝ์ƒ‰, ํ…์ŠคํŠธ ์ƒ‰์ƒ, ํ…Œ๋‘๋ฆฌ ๋“ฑ ๊ฐ ์š”์†Œ์˜ ์‹œ๊ฐ์  ์Šคํƒ€์ผ์ด ๋ Œ๋”๋ง๋ฉ๋‹ˆ๋‹ค.

2. ์ด ์ž‘์—…์€ CPU์™€ GPU๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

 

๐Ÿงฉ 2.6 Compositing ๋‹จ๊ณ„

 

ํŽ˜์ธํŒ…๋œ ์š”์†Œ๋“ค์ด ์—ฌ๋Ÿฌ ๋ ˆ์ด์–ด๋กœ ๋‚˜๋‰˜์–ด์ ธ ์žˆ๋‹ค๋ฉด, ์ปดํฌ์ง€ํŒ…(Compositing) ๋‹จ๊ณ„์—์„œ ์ด ๋ ˆ์ด์–ด๋“ค์„ ํ•ฉ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ: CSS transform, z-index ๋“ฑ์ด ์ ์šฉ๋œ ์š”์†Œ๋Š” ๋ณ„๋„์˜ ๋ ˆ์ด์–ด๋กœ ๋ถ„๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

GPU๊ฐ€ ๋ ˆ์ด์–ด๋ฅผ ์ตœ์ ํ™”ํ•˜์—ฌ ํ™”๋ฉด์— ์ตœ์ข…์ ์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

 

3. ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ํŒ

 

๐ŸŽ๏ธ ๋ Œ๋”๋ง ์„ฑ๋Šฅ ์ตœ์ ํ™”

1. DOM ํฌ๊ธฐ ์ค„์ด๊ธฐ

DOM์ด ๋„ˆ๋ฌด ํฌ๋ฉด ๋ Œ๋”๋ง ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

2. CSS ์„ ํƒ์ž ๋‹จ์ˆœํ™”

๋ณต์žกํ•œ ์„ ํƒ์ž๋Š” CSSOM ์ƒ์„ฑ ์†๋„๋ฅผ ์ €ํ•˜์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. Critical Rendering Path ์ตœ์ ํ™”

์ค‘์š”ํ•œ ๋ฆฌ์†Œ์Šค(CSS, JS ๋“ฑ)๋ฅผ ๋จผ์ € ๋กœ๋“œํ•˜์—ฌ ์ดˆ๊ธฐ ๋ Œ๋”๋ง ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜์„ธ์š”.

4. ๋ ˆ์ด์•„์›ƒ ๋ณ€๊ฒฝ ์ตœ์†Œํ™”

์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” Layout ๋‹จ๊ณ„(Reflow)๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด CSS ์†์„ฑ์„ ์‹ ์ค‘ํžˆ ์‚ฌ์šฉํ•˜์„ธ์š”.

 

โš ๏ธ ๋ฆฌํ”Œ๋กœ์šฐ์™€ ๋ฆฌํŽ˜์ธํŠธ

Reflow(๋ ˆ์ด์•„์›ƒ ์žฌ๊ณ„์‚ฐ): ์š”์†Œ์˜ ํฌ๊ธฐ๋‚˜ ์œ„์น˜๊ฐ€ ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ ๋ฐœ์ƒ.

Repaint(์žฌํŽ˜์ธํŒ…): ์š”์†Œ์˜ ์‹œ๊ฐ์  ์Šคํƒ€์ผ๋งŒ ๋ณ€๊ฒฝ๋  ๋•Œ ๋ฐœ์ƒ.

 

4. ๋ธŒ๋ผ์šฐ์ €๋ณ„ ๋ Œ๋”๋ง ์—”์ง„

 

๊ฐ ๋ธŒ๋ผ์šฐ์ €๋Š” ๊ณ ์œ ์˜ ๋ Œ๋”๋ง ์—”์ง„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

ํฌ๋กฌ/์—ฃ์ง€: Blink

์‚ฌํŒŒ๋ฆฌ: WebKit

ํŒŒ์ด์–ดํญ์Šค: Gecko

IE/์˜›๋‚  Edge: Trident

 

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

1. HTML ํŒŒ์‹ฑ → DOM ์ƒ์„ฑ

2. CSS ํŒŒ์‹ฑ → CSSOM ์ƒ์„ฑ

3. DOM + CSSOM → Render Tree ์ƒ์„ฑ

4. Layout → ์š”์†Œ์˜ ํฌ๊ธฐ์™€ ์œ„์น˜ ๊ณ„์‚ฐ

5. Painting → ํ™”๋ฉด์— ํ”ฝ์…€ ๊ทธ๋ฆฌ๊ธฐ

6. Compositing → ๋ ˆ์ด์–ด ํ•ฉ์„ฑ ํ›„ ํ™”๋ฉด์— ํ‘œ์‹œ

 

๊ฒฐ๋ก 

 

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

 

๐ŸŒท์ „์„ค์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด๋ด…์‹œ๋‹น!๐ŸŒท

728x90
๋ฐ˜์‘ํ˜•