๐ ๋ธ๋ผ์ฐ์ ๋ ๋๋ง ๊ณผ์ : ๋์ ๋ณด์ด๋ ์น์ ๋ง๋ฒ! ๐งโ๏ธ
๋ธ๋ผ์ฐ์ ๊ฐ ์นํ์ด์ง๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ ๊ณผ์ ์ ๋ง์น ๋ง๋ฒ๊ณผ๋ ๊ฐ์ต๋๋ค. 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 → ๋ ์ด์ด ํฉ์ฑ ํ ํ๋ฉด์ ํ์
๊ฒฐ๋ก
๋ธ๋ผ์ฐ์ ๋ ๋๋ง ๊ณผ์ ์ ์ ์ดํดํ๋ฉด ์ฑ๋ฅ ์ต์ ํ์ ์ฌ์ฉ์ ๊ฒฝํ ํฅ์์ ํฐ ๋์์ ์ค ์ ์์ต๋๋ค. ๋ ๋๋ง์ ๋ณต์กํ ๋ง๋ฒ์ ํํค์น๊ณ ๋๋, ์ด์ ๋ ์ฝ๋๊ฐ ํ๋ฉด์ ํ์๋๋ ๊ณผ์ ์ ๋ ๊น์ด ์ดํดํ ์ ์๊ฒ ์ฃ ?
๐ท์ ์ค์ ๊ฐ๋ฐ์๊ฐ ๋์ด๋ด ์๋น!๐ท
'Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ Base64๋ ๋ฌด์์ผ๊น? ์น๊ณผ ๋ฐ์ดํฐ๋ฅผ ์๋ ํจ์จ์ ์ธ ๋ค๋ฆฌ ๐ (0) | 2025.03.08 |
---|---|
๐ ์น ์คํ ๋ฆฌ์ง(Web Storage)๋? (0) | 2025.02.19 |
๐ช ์ฟ ํค๋ ๋ฌด์์ธ๊ฐ? (0) | 2025.02.18 |
๐ Permanent Redirect: ๋ธ๋ผ์ฐ์ ์ ๊ธธ์ก์ด๊ฐ ๋๋ 301 ๋ฆฌ๋ค์ด๋ ํธ ์ด์ผ๊ธฐ ๐ (0) | 2025.02.16 |
์ฟผ๋ฆฌ ์คํธ๋ง(Query String): ์น์ ๋ฐ์ดํฐ ์ ๋ฌ์ ์๋ฒฝ ๋ถ์ (0) | 2025.02.14 |