[๐ŸŽCS] Critical Rendering Path(CRP) ์ค‘์š” ๋ Œ๋”๋ง ๊ฒฝ๋กœ

h-a-n-aยท2023๋…„ 4์›” 3์ผ
1

๐ŸŽCS

๋ชฉ๋ก ๋ณด๊ธฐ
1/15
post-thumbnail

CRP๋ž€

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ HTML ์‘๋‹ต(response)์„ ๋ฐ›์•„ ํ™”๋ฉด์— ๊ทธ๋ฆฌ๊ธฐ ์œ„ํ•ด ์‹คํ–‰ํ•˜๋Š” 6๋‹จ๊ณ„์˜ ๊ณผ์ •

<!DOCTYPE html>
<html lang="ko">
  <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>CRP์— ๋Œ€ํ•ด ๋ฐœํ‘œํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค</title>
    <link rel="stylesheet" href="./style.css" />
    <script defer src="./main.js"></script>
  </head>
  <body>
    <form>
      <input type="text" placeholder="๋ฐœํ‘œ๋ฅผ ํ•˜๋ ค๋‹ˆ ๋–จ๋ฆฌ๋Š”๊ตฐ์š”" />
      <button>
        ๋ฒ„ํŠผ
      </button>
    </form>
  </body>
</html>

๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ์ฐฝ์— url์„ ์ž…๋ ฅํ•˜๊ณ  ์—”ํ„ฐํ‚ค๋ฅผ ์น˜๋ฉด ํ•ด๋‹น ์„œ๋ฒ„์— ์š”์ฒญ(request)์„ ๋ณด๋‚ด๊ฒŒ ๋œ๋‹ค. ์‘๋‹ต(response)๋ฅผ ๋ฐ›์œผ๋ฉด ์œ„์™€ ๊ฐ™์€ HTML๋ฌธ์„œ๋ฅผ ๋ฐ›์•„์˜ค๊ฒŒ ๋˜๊ณ , ์ด๊ฑธ ํ•˜๋‚˜ํ•˜๋‚˜ ํŒŒ์‹ฑ(parsing)ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ™”๋ฉด์— ๊ทธ๋ฆฌ๋Š” ๊ณผ์ •์ด ์‹œ์ž‘ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ™”๋ฉด์œผ๋กœ ๊ทธ๋ฆฌ๊ธฐ๊นŒ์ง€ ๋ธŒ๋ผ์šฐ์ €๋Š” ์ค‘์š” ๋ Œ๋”๋ง ๊ฒฝ๋กœ(CRP:Critical Rendering Path)๋ฅผ ๊ฑฐ์ณ ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค.

CRP 6๋‹จ๊ณ„

  1. HTML ๋งˆํฌ์—…์„ ์ฒ˜๋ฆฌํ•˜๊ณ  DOM ํŠธ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•œ๋‹ค.
  2. CSS ๋งˆํฌ์—…์„ ์ฒ˜๋ฆฌํ•˜๊ณ  CSSOM ํŠธ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•œ๋‹ค.
  3. Javascript๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
  4. DOM ๋ฐ CSSOM์ด ๋ชจ๋‘ ๋งŒ๋“ค์–ด์ง€๋ฉด ์ด ๋‘˜์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ Œ๋”๋ง ํŠธ๋ฆฌ๋ฅผ ํ˜•์„ฑํ•œ๋‹ค.
  5. ๋ Œ๋”๋ง ํŠธ๋ฆฌ์—์„œ ๊ฐ๊ฐ์˜ ๋…ธ๋“œ๋“ค์ด ํ™”๋ฉด์— ์–ด๋””์— ์–ด๋–ป๊ฒŒ ์œ„์น˜ํ• ์ง€ ๊ณ„์‚ฐํ•œ๋‹ค.
  6. ํ™”๋ฉด์— ์‹ค์ œ ํ”ฝ์…€์„ Paintํ•œ๋‹ค.

CRP๋ฅผ ์ƒ๊ฐํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

์ค‘์š” ๋ Œ๋”๋ง ๊ฒฝ๋กœ์˜ ๊ฐ ๋‹จ๊ณ„๊ฐ€ ์ตœ๋Œ€ํ•œ ํšจ์œจ์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋„๋ก ๋งŒ๋“ค๋ฉด(=์ตœ์ ํ™”) * ์ดˆ๊ธฐ ์ปจํ…์ธ ๋ฅผ ํ™”๋ฉด์— ๋น ๋ฅด๊ฒŒ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŽ˜์ด์ง€ ์ดˆ๊ธฐ ๋ Œ๋”๋ง ์ดํ›„ UI ์ƒํƒœ๊ฐ€ ๋ณ€ํ™”๋˜๋ฉด ์œ„ ํ”„๋กœ์„ธ์Šค์˜ ์ „์ฒด ํ˜น์€ ์ผ๋ถ€๋ฅผ ๊ฑฐ์ณ ํ™”๋ฉด์ด ๊ทธ๋ ค์ง€๊ฒŒ ๋˜๋ฏ€๋กœ, CRP๋ฅผ ์ƒ๊ฐํ•ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค๋ฉด ํ™”๋ฉด ์—…๋ฐ์ดํŠธ ์‹œ๊ฐ„๋„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

1. DOM ํŠธ๋ฆฌ ๋งŒ๋“ค๊ธฐ

  • ๋ธŒ๋ผ์šฐ์ €๋Š” ์ฝ์–ด๋“ค์ธ HTML ๋ฐ”์ดํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ด๋‹น ํŒŒ์ผ์— ์ง€์ •๋œ ์ธ์ฝ”๋”ฉ(ex.UTF-8)์— ๋”ฐ๋ผ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พผ๋‹ค.
  • ๋ฐ”๊พผ ๋ฌธ์ž์—ด์„ ๋‹ค์‹œ ์ฝ์–ด์„œ, HTML ํ‘œ์ค€์— ๋”ฐ๋ผ ํ† ํฐ(token)์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ <html>์€ StartTag:html๋กœ, </html>์€ EndTag:html๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ๊ฐ ํ† ํฐ๋“ค์€ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ DOM์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ ์š”์†Œ์ธ ๋…ธ๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. StartTag:html์ด ๋“ค์–ด์™”์œผ๋ฉด html๋…ธ๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  EndTag:html์„ ๋งŒ๋‚˜๊ธฐ ์ „๊นŒ์ง€ ๋“ค์–ด์˜ค๋Š” ํ† ํฐ๋“ค์€ html ๋…ธ๋“œ์˜ ์ž์‹ ๋…ธ๋“œ๋กœ ๋„ฃ๋Š” ์‹์œผ๋กœ ๋ณ€ํ™˜์ด ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์—, ์ด ๊ณผ์ •์ด ๋๋‚˜๋ฉด tree ๋ชจ์–‘์˜ DOM์ด ์™„์„ฑ๋˜๊ฒŒ ๋œ๋‹ค.

ํ† ํฐ: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๋ฌธ๋ฒ•์  ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š” ์ฝ”๋“œ์˜ ์ตœ์†Œ ๋‹จ์œ„.
๋…ธ๋“œ: HTML DOM์—์„œ ๊ณ„์ธต์  ๋‹จ์œ„๋กœ, ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณณ.

2. CSSOM ํŠธ๋ฆฌ ๋งŒ๋“ค๊ธฐ


HTML์— CSS๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” link ํƒœ๊ทธ๋‚˜ style ํƒœ๊ทธ๋ฅผ ๋งŒ๋‚˜๋ฉด DOM ์ƒ์„ฑ์„ ์ผ์‹œ ์ค‘๋‹จํ•œ๋‹ค. CSS ํŒŒ์‹ฑ์€ CSS ํŠน์„ฑ์ƒ ์ž์‹ ๋…ธ๋“œ๋“ค์ด ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํŠน์ •์„ ๊ณ„์†ํ•ด์„œ ์ด์–ด๋ฐ›๋Š”๋‹ค๋Š”(cascading) ๊ทœ์น™์ด ์ถ”๊ฐ€๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋นผ๊ณ ๋Š” HTML๊ณผ ๋™์ผํ•œ ํŒŒ์‹ฑ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉฐ ํ•ด์„ํ•˜์—ฌ CSSOM์„ ์ƒ์„ฑํ•œ๋‹ค. *

3. Javascript ์‹คํ–‰

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

4. Render ํŠธ๋ฆฌ ๋งŒ๋“ค๊ธฐ


CSSOM๊นŒ์ง€ ๋ชจ๋‘ ๋งŒ๋“ค์—ˆ์œผ๋ฉด ,DOM+CSSOM์„ ํ•ฉ์ณ์„œ Render Tree๋ฅผ ๋งŒ๋“ ๋‹ค. ์ตœ์ƒ์œ„ doucment๋ถ€ํ„ฐ ๊ฐ ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ฐ๊ฐ์˜ ๋…ธ๋“œ์— ๋งž๋Š” CSSOM์„ ์ฐพ์•„์„œ ๊ทœ์น™์„ ์ ์šฉํ•ด, ์ฝ˜ํ…์ธ  ๋ฐ ๊ณ„์‚ฐ๋œ ์Šคํƒ€์ผ๊ณผ ํ•จ๊ป˜ ๋‚ด๋ณด๋‚ธ๋‹ค. Render Tree๋Š” DOM Tree์— ์žˆ๋Š” ๊ฒƒ๋“ค ์ค‘์—์„œ ํ™”๋ฉด์— ์‹ค์ œ๋กœ '๋ณด์ด๋Š”' ์นœ๊ตฌ๋“ค๋งŒ ๋ณด์—ฌ์ค€๋‹ค.๊ทธ๋ž˜์„œ ํ™”๋ฉด์— ๋ณด์ด์ง€ ์•Š๋Š” <meta> ํƒœ๊ทธ, display:none ๊ฐ™์€ ์†์„ฑ์„ ๊ฐ€์ง„ ์š”์†Œ๋Š” ๋ Œ๋”์™€ ๊ด€๊ณ„๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํฌํ•จ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค. *

5. ๋ ˆ์ด์•„์›ƒ ๋งŒ๋“ค๊ธฐ(layout,reflow)

์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ํ™”๋ฉด์—์„œ ์–ผ๋งˆ๋งŒํผ์˜ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ณ  ์–ด๋””์— ์œ„์น˜ํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋‹จ๊ณ„

์•ž์„œ Render Tree์—๋Š” ๋…ธ๋“œ์™€ ๋…ธ๋“œ์˜ ์Šคํƒ€์ผ๋งŒ ๊ณ„์‚ฐ๋˜์–ด ์žˆ๋‹ค. ์–˜๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒจ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์•Œ๊ณ  ์žˆ์ง€๋งŒ, ํ˜„์žฌ ๋ณด์ด๋Š” ๋ทฐํฌํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‹ค์ œ๋กœ ๋†“์œผ๋ ค๋ฉด ์–˜๊ฐ€ ์–ด๋””๋กœ ๊ฐ€์•ผํ•˜๋Š”์ง€๋„ ๊ณ„์‚ฐ์„ ํ•ด์•ผํ•œ๋‹ค. CSS box model์— ๋”ฐ๋ผ์„œ ํ…์ŠคํŠธ๋‚˜ ์š”์†Œ์˜ ๋ฐ•์Šค๊ฐ€ ํ™”๋ฉด์—์„œ ์ฐจ์ง€ํ•˜๋Š” ์˜์—ญ์ด๋‚˜ ์—ฌ๋ฐฑ, ์ด์™ธ์˜ ์Šคํƒ€์ผ ์†์„ฑ์ด ๊ณ„์‚ฐ๋œ๋‹ค. ์ด ๊ณผ์ •์—์„œ ์ถ”์ƒ์ ์ธ ๊ณ„์‚ฐ์‹(%,vh,vw ๋“ฑ)์€ ์ธก์ •๊ฐ€๋Šฅํ•œ ํ”ฝ์…€ ๋‹จ์œ„๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ์ด๋กœ์จ ๋…ธ๋“œ์™€ ๊ณ„์‚ฐ๋œ ์Šคํƒ€์ผ ๊ทธ๋ฆฌ๊ณ  ํ™”๋ฉด ๋‚ด์—์„œ ๊ฐ ๋…ธ๋“œ์˜ ์ •ํ™•ํ•œ ์œ„์น˜๋ฅผ ์–ป๊ฒŒ ๋œ๋‹ค.

6. ํŽ˜์ธํŒ…(paint)

์—˜๋ฆฌ๋จผํŠธ์˜ ์ƒ‰์ƒ,์ด๋ฏธ์ง€,ํ…Œ๋‘๋ฆฌ,๊ทธ๋ฆผ์ž ๋“ฑ ์‹œ๊ฐ์ ์ธ ์š”์†Œ๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋‹จ๊ณ„

  • paint/rasterize: ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ํ™”๋ฉด์˜ ํ”ฝ์…€๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ด๋‹ค. ํ…์ŠคํŠธ, ์ƒ‰, ์ด๋ฏธ์ง€, ๊ฒฝ๊ณ„ ๋ฐ ๊ทธ๋ฆผ์ž ๋“ฑ ์š”์†Œ์˜ ๋ชจ๋“  ์‹œ๊ฐ์  ๋ถ€๋ถ„์„ ๊ทธ๋ฆฌ๋Š” ์ž‘์—…์„ ํฌํ•จํ•œ๋‹ค. ์‹ค์ œ๋กœ ํ”ฝ์…€๋กœ ์ฑ„์šฐ๋Š” ์ž‘์—…์€ rasterize๋ผ๊ณ  ํ•˜๋ฉฐ, paint๋Š” ๊ทธ๋ฆด ํ˜ธ์ถœ ๋ชฉ๋ก์„ ์ƒ์„ฑํ•œ๋‹ค.
  • composite: ๋…ธ๋“œ์— ์ƒ‰์น ์„ ํ•˜๊ณ  ๋‚˜๋ฉด ๊ฐ ๋…ธ๋“œ๋ฅผ ๋ณ„๋„์˜ ๋ ˆ์ด์–ด๋กœ ๋ถ„๋ฆฌ์‹œ์ผœ๋ฒ„๋ฆฐ๋‹ค. ์ด ๋•Œ, ๋…ธ๋“œ ํ•˜๋‚˜ํ•˜๋‚˜ ์ƒ‰์น ํ•  ๋•Œ๋งˆ๋‹ค ๋ณ„๋„์˜ ๋ ˆ์ด์–ด๊ฐ€ ํ˜•์„ฑ๋˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋ ˆ์ด์–ด๋ฅผ ๋งŒ๋“ค๊ฒŒ ์œ ๋„ํ•˜๋Š” css ์†์„ฑ/์กฐ๊ฑด๋“ค์ด ๋”ฐ๋กœ ์žˆ๋‹ค. ํŠนํžˆ transform ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋ณ„๋„์˜ ๋ ˆ์ด์–ด๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

Update UI

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, CSS, ์›น ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๊ฐ์  ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ์ฃผ์–ด์ง„ ํ”„๋ ˆ์ž„์— ๋Œ€ํ•ด ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์•„๋ž˜ 3๊ฐ€์ง€ ์ค‘ ํ•˜๋‚˜์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

๋‹ค์‹œ Layout์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ

์ฃผ๋กœ ์š”์†Œ์˜ ํฌ๊ธฐ๋‚˜ ์œ„์น˜๊ฐ€ ๋ฐ”๋€” ๋•Œ, ํ˜น์€ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์˜ ํฌ๊ธฐ๊ฐ€ ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ ๋‹ค์‹œ ๋ฐœ์ƒํ•œ๋‹ค. (height,width,left,top,font-size,line-height ๋“ฑ). ๋ณด์ด๋Š” ์š”์†Œ๋“ค์€ ๋ณ€ํ•จ์—†์œผ๋ฏ€๋กœ Render Tree๋Š” ๊ทธ๋Œ€๋กœ์ธ ์ƒํƒœ์—์„œ ๋ ˆ์ด์•„์›ƒ ๋‹จ๊ณ„๋งŒ ๋‹ค์‹œ ๊ฑฐ์ณ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•ด์„œ ๊ทธ๋ฆฌ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๊ณ ๋‚˜์„œ paint,๋ ˆ์ด์–ด๋ฅผ ํ•ฉ์„ฑํ•˜๋Š” composite๊นŒ์ง€ ์ผ์–ด๋‚œ๋‹ค.

paint๋ถ€ํ„ฐ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ

์œ„์น˜๊ฐ’์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” CSS ๊ฐ’๋“ค์„ ์ˆ˜์ •ํ•˜๊ฒŒ ๋˜๋ฉด ๊ทธ๋ƒฅ ๊ธฐ์กด์— ๋งŒ๋“ค์–ด๋‘” ๋ Œ๋”ํŠธ๋ฆฌ๋ฅผ ์žฌํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ์ฃผ๋กœ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง€๋‚˜ ํ…์ŠคํŠธ ์ƒ‰์ƒ, ๊ทธ๋ฆผ์ž ๋“ฑ ๋ ˆ์ด์•„์›ƒ์˜ ์ˆ˜์น˜๋ฅผ ๋ณ€ํ™”์‹œํ‚ค์ง€ ์•Š๋Š” ์Šคํƒ€์ผ์˜ ๋ณ€๊ฒฝ์„ ์˜๋ฏธํ•œ๋‹ค.(background-color,color,visibility,text-decoration ๋“ฑ)

๋ ˆ์ด์–ด์˜ ํ•ฉ์„ฑ๋งŒ ๋‹ค์‹œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ

paint ๋‹จ๊ณ„๊นŒ์ง€ ๋‚˜๋‰˜์–ด ์žˆ๋˜ ๋ ˆ์ด์–ด๋“ค์„ ํ•˜๋‚˜์˜ ํ‰๋ฉด์œผ๋กœ ํ•ฉ์ณ์„œ ์‹ค์ œ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚ด๋Š” ๊ณผ์ •์ด๋‹ค. ์•ž์„œ ์–ธ๊ธ‰ํ•œ ๋ ˆ์ด์•„์›ƒ๊ณผ ํŽ˜์ธํŒ…์€ ์—ฌ๋Ÿฌ ๋ ˆ์ด์–ด๋กœ ๋‚˜๋‰˜์–ด ์ž‘์—…์ด ์ด๋ฃจ์–ด์ง€๋Š”๋ฐ(์Œ“์ž„ ๋งฅ๋ฝ, Stacking Context ex.z-index) ์ตœ์ข…์ ์œผ๋กœ ์ด๊ฒƒ๋“ค์„ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋ฌผ๋กœ ํ•ฉ์น˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. ์ด๋Ÿฌํ•œ ๋ ˆ์ด์–ด๊ฐ„ ์ˆœ์„œ๋ฅผ ๋”ฐ์ ธ ํ•˜๋‚˜์˜ ํ™”๋ฉด์œผ๋กœ ํ•ฉ์„ฑํ•˜๋ฉด ๋ชจ๋“  ๊ณผ์ •์ด ๋งˆ๋ฌด๋ฆฌ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด opacity๊ฐ€ ๋ณ€๊ฒฝ๋œ๋‹ค๋ฉด ์น ํ•ด์ง„ ์ƒ‰์ƒ์„ ๋ฐ”๊ฟ€ ํ•„์š”์—†์ด ๋ ˆ์ด์–ด๋ฅผ ํ•ฉ์„ฑํ•˜๋Š” ๊ณผ์ •์—์„œ์˜ ๋ณ€๊ฒฝ๋งŒ ์ผ์–ด๋‚˜๋ฉด ๋œ๋‹ค. ํ˜„์žฌ opacity,transform๋งŒ composite์„ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” CSS ์†์„ฑ์ด๋‹ค.

์ฐธ๊ณ ์‚ฌ์ดํŠธ
Jang Jae Won
eommoonjoo.log
jKey๋‹˜์˜ ๋ฒจ๋กœ๊ทธ
์‹ฌ์žฌ์ฒ ๋‹˜์˜ ๋ธ”๋กœ๊ทธ
Miso๋‹˜์˜ ๋ธ”๋กœ๊ทธ
khys๋‹˜์˜ ํ‹ฐ์Šคํ† ๋ฆฌ

profile
ํ•˜๋ฃจํ•˜๋ฃจ๊ฐ€ ์—ฐ์Šต์ด๋‹ˆ ๋‚ด์ผ์€ ๋” ๊ฐ•ํ•ด์งˆ ๊ฒ๋‹ˆ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€