๐ŸŽจ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ • ์•Œ์•„๋ณด๊ธฐ

๐Ÿ–Œ๋ Œ๋”๋ง?

ํ‰์†Œ์— ๊ฐœ๋ฐœ ๊ด€๋ จ์ด ์•„๋‹ˆ๋”๋ผ๋„ ์˜์ƒ ๋ Œ๋”๋ง์ด๋ผ๋“ ์ง€ ๋ Œ๋”๋ง ์ด๋ผ๋Š” ๋ง์„ ๋“ค์–ด๋ณธ ์ ์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ Œ๋”๋ง ์ด๋ž€ ์‰ฝ๊ฒŒ ๋งํ•ด ํ™”๋ฉด์— ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋Š” ํ–‰์œ„์ž…๋‹ˆ๋‹ค.

๋‚˜์•„๊ฐ€์„œ

๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง์€ HTML ๋“ฑ์„ ์ด์šฉํ•ด์„œ ๋ธŒ๋ผ์šฐ์ €์— ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋Š” ํ–‰์œ„๋ฅผ ๋œปํ•˜์ฃ .

๐ŸŽจ๋ Œ๋”๋ง ๊ณผ์ •

๋ชจ๋“  ๊ทธ๋ฆผ์—๋Š” ๋ฐ‘๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๊ณ  ์ƒ‰์„ ์น ํ•˜๊ณ , ๊ณผ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ ์Šคํฐ์ง€๋ฐฅ ์งค์ฒ˜๋Ÿผ ์›์„ ๊ทธ๋ฆฌ๋Š” ๋ฐ์—๋„ ๊ธด ๊ณผ์ •์ด ํ•„์š”ํ•ด์š”

๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง๋„ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋Š” ๊ฒƒ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

์ž, ์ค€๋น„๋ฌผ์„ ์•Œ์•„๋ด…์‹œ๋‹ค.

  • HTML ํŒŒ์ผ
  • CSS ํŒŒ์ผ

์ด๊ฒƒ๋“ค์„ ์งœ๋‚ด์„œ ๋ธŒ๋ผ์šฐ์ €์— ๊ทธ๋ฆผ์„ ๊ทธ๋ ค๋ด…์‹œ๋‹ค!

1. Object-model ์ƒ์„ฑ

dom

  • HTML๋กœ ๋ถ€ํ„ฐ DOM(Document Object Model)์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋žต ์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ์ƒ๊ฒผ์–ด์š”.

cssom

  • CSS๋กœ ๋ถ€ํ„ฐ CSSOM(CSS Object Model)์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ๊ตฐ์š”.
  • ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ๊ฐ๊ฐ์˜ DOM๊ณผ CSSOM์€ ์„œ๋กœ ๋…๋ฆฝ์ ์ธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • DOM-tree์™€ CSSOM-tree๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋ผ๋„ ๋ธŒ๋ผ์šฐ์ €์— ๋นจ๋ฆฌ HTML๊ณผ CSS๋ฅผ ์ œ๊ณตํ•ด์•ผ๊ฒ ์ฃ ?

2. Render Tree ์ƒ์„ฑ

์ž ์ด์ œ ๋งŒ๋“ค์–ด ๋†“์€ DOM๊ณผ CSSOM์„ ํ•ฉ์ณ๋ณผ ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค.

render-tree

  • ์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด DOM๊ณผ CSSOM์ด ํ•ฉ์ณ์ ธ Render Tree๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ๋ Œ๋”๋ง ํŠธ๋ฆฌ์—๋Š” ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋…ธ๋“œ๋งŒ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

    • ํŽ˜์ด์ง€์— ํ‘œํ˜„๋˜์ง€ ์•Š๋Š” ๋…ธ๋“œ๋“ค์€ ๋ Œ๋”๋ง ํŠธ๋ฆฌ์— ํฌํ•จ๋˜์ง€ ์•Š์•„์š”! ex) ์œ„ ๊ทธ๋ฆผ์˜ display: none;

    • ํ•˜์ง€๋งŒ visibility: hidden; ์€ ๋ณด์ด์ง€๋Š” ์•Š์•„๋„ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ Œ๋”๋ง ํŠธ๋ฆฌ์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค!

3. ๋ ˆ์ด์•„์›ƒ ๊ณ„์‚ฐํ•˜๊ธฐ

๋ Œ๋”๋ง ํŠธ๋ฆฌ๊ฐ€ ์™„์„ฑ๋˜์—ˆ์œผ๋‹ˆ ์ด์ œ ๊ณต๊ฐ„์„ ๊ฐ€๋Š ํ•ด๋ณผ ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์œผ๋กœ ์น˜๋ฉด ๋ฐ‘๊ทธ๋ฆผ ์ •๋„์ฃ .

layout

์œ„ ๊ทธ๋ฆผ์—์„œ์ฒ˜๋Ÿผ ๋ทฐํฌํŠธ ๋‚ด๋ถ€์—์„œ ๋ Œ๋”๋ง ํŠธ๋ฆฌ๊ฐ€ ๊ฐ€์ง„ ๋…ธ๋“œ๋“ค์˜ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

4. ํŽ˜์ธํŒ…(or ๋ž˜์Šคํ„ฐํ™”)

์ž ๋ชจ๋“  ๊ฒƒ์ด ์ค€๋น„๋˜์—ˆ์œผ๋‹ˆ ์ด์ œ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆด ์ผ๋งŒ ๋‚จ์•˜๋„ค์š”!

  • ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ๋งŽ์ด ๊ฑธ๋ฆฌ๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์ด์ œ ๋ฉ”์ธ์ด๋‹ˆ๊นŒ์š”.
  • ๊ทธ๋ฆด ๊ทธ๋ฆผ์ด ์–ผ๋งˆ๋‚˜ ๋ณต์žกํ•˜๋Š๋ƒ, ์–ผ๋งˆ๋‚˜ ๋งŽ์œผ๋ƒ์— ๋”ฐ๋ผ ์‹œ๊ฐ„์ด ์ฒœ์ฐจ๋งŒ๋ณ„์ž…๋‹ˆ๋‹ค.

    • CSSํŒŒ์ผ์˜ ํฌ๊ธฐ๊ฐ€ ํฌ๊ฑฐ๋‚˜, ์ƒ‰์ด ๋‹ค์ฑ„๋กญ๊ฑฐ๋‚˜, ๊ณ„์‚ฐํ•ด์•ผํ•˜๋Š” ๊ทธ๋ฆผ์ž ๊ฐ™์€ ๊ฒŒ ์žˆ์œผ๋ฉด ๋” ๊ธธ์–ด์ง€๊ฒ ์ฃ ?
    • ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ์—๋Š” ์‹œ๊ฐ„์ด ๋” ๋นจ๋ผ์ง‘๋‹ˆ๋‹ค!

๐Ÿงน์ •๋ฆฌ

์ž, ๋งˆ์ง€๋ง‰์œผ๋กœ ์ •๋ฆฌ๋ฅผ ํ•ด๋ด…์‹œ๋‹ค.

  1. ์ฒ˜์Œ์— HTML, CSS๋ฅผ ๋ฐ›์•„์™€์„œ DOM, CSSOM ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
  2. ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ DOM, CSSOM๋ฅผ ํ•ฉ์ณ Render Tree๋ฅผ ๋งŒ๋“ค์–ด๋ƒ…๋‹ˆ๋‹ค.
  3. Render Tree์˜ ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ๋ทฐํฌํŠธ ๋‚ด์— ์ฐจ์ง€ํ•  ๊ณต๊ฐ„์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
  4. ์ด์ œ ๋…ธ๋“œ๋“ค์„ ํ™”๋ฉด์— ํŽ˜์ธํŠธ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค!

๊ฐ„๋‹จํ•ด๋ณด์ด์ง€๋งŒ DOM์ด๋‚˜ CSSOM์ด ์ˆ˜์ •๋˜๊ธฐ๋ผ๋„ ํ•˜๋ฉด ์ „๋ถ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐ˜๋ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์–ด๋•Œ์š” ์ฐธ ์‰ฝ์ฃ ?

โ“์ด๋Ÿฌํ•œ ๊ณผ์ •์„ ๋งค๋ฒˆ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฑด ๋‚ญ๋น„๊ฐ™์•„์š”. ์ตœ์ ํ™” ๋ฐฉ๋ฒ•์€ ์—†๋‚˜์š”?

์ฃผ์š” ๋ Œ๋”๋ง ์ตœ์ ํ™” ์ž‘์—…์ด๋ผ๋Š” ๊ฒŒ ์žˆ์œผ๋‹ˆ ์ฐพ์•„๋ณด์‹œ๋ฉด ๋„์›€์ด ๋  ๊ฒ๋‹ˆ๋‹ค!

๐Ÿ“š์ฐธ๊ณ ์ž๋ฃŒ


Written by@Caesiumy
๐ŸŒ์˜๋ฌธ๊ณผ์—์„œ ์ถœ๋ฐœํ•ด ๐Ÿ’ป์ปดํ“จํ„ฐ๊ณตํ•™์œผ๋กœ ๋„์ฐฉํ•˜๋Š” ํ˜ผ์ข… ๐Ÿ‘จโ€๐Ÿ’ป๊ฐœ๋ฐœ์ž!