[CS๐Ÿ“–] ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง

๊น€๋‹ค์Šฌยท2021๋…„ 8์›” 22์ผ
0
post-thumbnail

๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ๊ณผ์ •์€ ์›น ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ํ•„์ˆ˜๋กœ ์•Œ์•„๋‘ฌ์•ผํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.
์ด๋ฅผ ํ™•์‹คํžˆ ์ดํ•ดํ•ด์•ผ ๋ Œ๋”๋ง ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.


๐Ÿ”Ž ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง์ด๋ž€?

  • HTML, CSS, JavaScript ๋“ฑ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋ฌธ์„œ๋“ค์„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ™”๋ฉด์— ๊ทธ๋ ค์ฃผ๋Š” ๋™์ž‘์„ ๋งํ•œ๋‹ค.
  • ๊ฐ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ Œ๋”๋ง์„ ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ๊ฐ์˜ ๋ Œ๋”๋ง ์—”์ง„์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ์ข…๋ฅ˜๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ๋ Œ๋”๋ง ์—”์ง„์€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ• ๊นŒ?

โš™๏ธ ๋ Œ๋”๋ง ์—”์ง„์˜ ๋™์ž‘ ๊ณผ์ •

๋ Œ๋”๋ง ์—”์ง„์˜ ๋™์ž‘ ๊ณผ์ •์€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ํฌ๊ฒŒ 4๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

1. DOM, CSSOM ํŠธ๋ฆฌ ๊ตฌ์ถ•

๋ธŒ๋ผ์šฐ์ €๋Š” ๋ Œ๋”๋ง์„ ์œ„ํ•ด ์ฒ˜์Œ์œผ๋กœ HTML๊ณผ CSS๋ฅผ ์ฝ๊ฒŒ ๋˜๋Š”๋ฐ ์ด๋Š” ๋‹จ์ˆœํ•œ ํ…์ŠคํŠธ์ด๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ๊ฐ ์—ฐ์‚ฐ๊ณผ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก HTML Parser์™€ CSS Parser๋ฅผ ์ด์šฉํ•ด DOM(Document Obhect Model), CSSOM(CSS Object Model)์„ ์ƒ์„ฑํ•œ๋‹ค.

2. ๋ Œ๋” ํŠธ๋ฆฌ ๊ตฌ์ถ•(Attachment)

์ „ ๋‹จ๊ณ„์—์„œ ๋งŒ๋“ค์–ด์ง„ DOM ํŠธ๋ฆฌ์™€ CSSOM ํŠธ๋ฆฌ๋ฅผ ๊ฐ€์ง€๊ณ  ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.
๋ Œ๋” ํŠธ๋ฆฌ๋Š” DOM ํŠธ๋ฆฌ์™€ CSSOM ํŠธ๋ฆฌ๊ฐ€ ํ•ฉ์ณ์ ธ ๋งŒ๋“ค์–ด์ง„ ํŠธ๋ฆฌ๋กœ, ๋ธŒ๋ผ์šฐ์ €์— ์ตœ์ข…์ ์œผ๋กœ ํ‘œ์‹œ๋  ๊ฒƒ๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค. ์ด ๊ณผ์ •์„ Attachment๋ผ๊ณ  ํ•œ๋‹ค.

์‹ค์ œ ํ™”๋ฉด์— ํ‘œํ˜„๋  ๋…ธ๋“œ๋“ค๋กœ๋งŒ ๊ตฌ์„ฑ๋œ๋‹ค๋Š” ๋ง์€
์˜ˆ๋ฅผ ๋“ค์–ด, display: none ์†์„ฑ์ด ์ ์šฉ๋œ ์š”์†Œ๋Š” ๋ Œ๋” ํŠธ๋ฆฌ์—์„œ ์ œ์™ธ๋œ๋‹ค.
(visibility: hidden ์†์„ฑ์ด ์ ์šฉ๋œ ์š”์†Œ๋Š” ๋ Œ๋” ํŠธ๋ฆฌ์— ์กด์žฌํ•œ๋‹ค.)

๊ทธ ์ด์œ ๋Š”, display: none์€ ์š”์†Œ ์ž์ฒด๊ฐ€ ๋ณด์ด์ง€์•Š๊ณ  ๊ณต๊ฐ„๋„ ์ฐจ์ง€ํ•˜์ง€์•Š๋Š” ๋ฐ˜๋ฉด,
visibility: hidden์€ ์š”์†Œ ์ž์ฒด๋Š” ๋ณด์ด์ง€์•Š์ง€๋งŒ ๊ณต๊ฐ„์€ ์ฐจ์ง€ํ•˜๊ณ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

3. ๋ Œ๋” ํŠธ๋ฆฌ ๋ฐฐ์น˜(Layout or Reflow)

๋ Œ๋” ํŠธ๋ฆฌ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์˜ ๋ทฐํฌํŠธ ๋‚ด์˜ ๊ฐ ๋…ธ๋“œ๋“ค์˜ ์ •ํ™•ํ•œ ์œ„์น˜์™€ ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.
%, vh, vw ๊ฐ™์€ ์ƒ๋Œ€์ ์ธ ์œ„์น˜์™€ ํฌ๊ธฐ ์†์„ฑ์€ ๋ชจ๋‘ ์‹ค์ œ ํ™”๋ฉด์— ๊ทธ๋ ค์ง€๋Š” px๋‹จ์œ„๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

๋ ˆ์ด์•„์›ƒ ์ „

๋ ˆ์ด์•„์›ƒ ํ›„

4. ๋ Œ๋” ํŠธ๋ฆฌ ๊ทธ๋ฆฌ๊ธฐ(Paint)

๋ ˆ์ด์•„์›ƒ ๋‹จ๊ณ„์—์„œ px๋‹จ์œ„๋กœ ๊ณ„์‚ฐ์ด ์™„๋ฃŒ๋œ ์š”์†Œ๋“ค์„ ์‹ค์ œ ํ™”๋ฉด์— ๊ทธ๋ฆฌ๋Š” ๋‹จ๊ณ„์ด๋‹ค.
ํฌ๊ธฐ, ์œ„์น˜์™€ ๊ด€๊ณ„์—†๋Š” CSS ์†์„ฑ(์ƒ‰์ƒ, ํˆฌ๋ช…๋„) ๋“ฑ์„ ํŽ˜์ธํŠธ ๋‹จ๊ณ„์—์„œ ์ ์šฉํ•œ๋‹ค.
์ด๋•Œ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ์Šคํƒ€์ผ์ด ๋ณต์žกํ• ์ˆ˜๋ก ํŽ˜์ธํŠธ ๋‹จ๊ณ„์—์„œ ์†Œ์š”๋˜๋Š” ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง„๋‹ค.


โญ๏ธ ๋ Œ๋”๋ง ์ตœ์ ํ™”

์œ„์˜ 4๊ฐ€์ง€ ๊ณผ์ •์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๊ณ ํ•ด์„œ ๋ Œ๋”๋ง ๊ณผ์ •์ด ๋ชจ๋‘ ๋๋‚œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
๋งŒ์•ฝ HTML, CSS ์š”์†Œ์˜ ํฌ๊ธฐ, ์œ„์น˜ ๋“ฑ์„ ์ˆ˜์ •ํ•˜๋ฉด 3. ๋ Œ๋” ํŠธ๋ฆฌ ๋ฐฐ์น˜(Layout)๊ณผ์ •์„ ๋‹ค์‹œ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

๋ Œ๋” ํŠธ๋ฆฌ์˜ ๊ฐ ์š”์†Œ๋“ค์˜ ํฌ๊ธฐ์™€ ์œ„์น˜๋ฅผ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š” ๊ณผ์ • : Reflow
Reflow๋œ ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ๋‹ค์‹œ ํ™”๋ฉด์— ๊ทธ๋ ค์ฃผ๋Š” ๊ณผ์ • : Repaint

Reflow

Reflow๊ฐ€ ์ผ์–ด๋‚˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ํŽ˜์ด์ง€ ์ดˆ๊ธฐ ๋ Œ๋”๋ง ์‹œ(์ตœ์ดˆ Layout ๊ณผ์ •)
  2. viewport ํฌ๊ธฐ ๋ณ€๊ฒฝ ์‹œ
  3. ๋…ธ๋“œ ์ถ”๊ฐ€ ๋˜๋Š” ์ œ๊ฑฐ
  4. ์š”์†Œ์˜ ์œ„์น˜, ํฌ๊ธฐ ๋ณ€๊ฒฝ
  5. ํฐํŠธ ๋ณ€๊ฒฝ, ์ด๋ฏธ์ง€ ํฌ๊ธฐ ๋ณ€๊ฒฝ

Repaint

Reflow ๊ณผ์ • ํ›„ ์‹ค์ œ๋กœ ํ™”๋ฉด์— ๊ทธ๋ ค์ฃผ๊ธฐ ์œ„ํ•œ Repaint ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.
๋งŒ์•ฝ ์ƒ‰์ƒ, ํˆฌ๋ช…๋„์™€ ๊ฐ™์€ ์†์„ฑ์˜ ๋ณ€๊ฒฝ๊ณผ ๊ฐ™์ด ๋ ˆ์ด์•„์›ƒ์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€์•Š๋Š” ์Šคํƒ€์ผ ์†์„ฑ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๊ฒฝ์šฐ์—๋Š” Repaint ๊ณผ์ •๋งŒ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.


๋”ฐ๋ผ์„œ, ์šฐ๋ฆฌ๋Š” ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด Reflow๋ฅผ ์ตœ์†Œํ™”ํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
์ด์™€ ๊ด€๋ จํ•œ ๋ Œ๋”๋ง ์ตœ์ ํ™” ๋ฐฉ๋ฒ• ๋ช‡๊ฐ€์ง€๋ฅผ ์•Œ์•„๋ณด์ž!

๋ Œ๋”๋ง ์ตœ์ ํ™” ๋ฐฉ๋ฒ•

1. Reflow ์ตœ์†Œํ™”ํ•˜๊ธฐ

Reflow๊ฐ€ ์ผ์–ด๋‚˜๋ฉด ์ „์ฒด px์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•ด์•ผํ•˜๊ณ , ํ•„์—ฐ์ ์œผ๋กœ Repaint๊ฐ€ ์ˆ˜ํ–‰๋˜์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์—, Repaint๋งŒ ์ˆ˜ํ–‰๋˜๋Š” ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

Reflow์™€ Repaint ์†์„ฑ ์•Œ์•„๋ณด๊ธฐ

2. ์˜ํ–ฅ์„ ์ฃผ๋Š” ๋…ธ๋“œ ์ตœ์†Œํ™”ํ•˜๊ธฐ

์• ๋‹ˆ๋ฉ”์ด์…˜์ด๋‚˜ ๋ ˆ์ด์•„์›ƒ ๋ณ€ํ™”๊ฐ€ ๋งŽ์€ ์š”์†Œ์˜ ๊ฒฝ์šฐ position ์†์„ฑ์„ absolute ๋˜๋Š” fixed๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ํ–ฅ์„ ๋ฐ›๋Š” ์ฃผ๋ณ€ ๋…ธ๋“œ๋“ค์„ ์ค„์ด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

3. ํ”„๋ ˆ์ž„ ์ค„์ด๊ธฐ

๋ถ€๋“œ๋Ÿฌ์šด ํšจ๊ณผ๋ฅผ ์กฐ๊ธˆ ์ค„์—ฌ ์„ฑ๋Šฅ ๊ฐœ์„ ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, 0.1์ดˆ์— 1px์”ฉ ์ด๋™ํ•˜๋Š” ์š”์†Œ๋ณด๋‹ค 3px์”ฉ ์ด๋™ํ•˜๋Š” ์š”์†Œ๊ฐ€ ์—ฐ์‚ฐ ๋น„์šฉ์ด 3๋ฐฐ ์ค„์–ด๋“ ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.


์ฐธ๊ณ  ์‚ฌ์ดํŠธ

profile
์ธ์ƒ์€ ์šฉ๊ธฐ์˜ ์–‘์— ๋”ฐ๋ผ ์ค„์–ด๋“ค๊ฑฐ๋‚˜, ๋Š˜์–ด๋‚œ๋‹ค

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