๋ธ๋ผ์ฐ์ ๋ ๋๋ง ๊ณผ์ ์ ์น ๊ฐ๋ฐ์๋ผ๋ฉด ํ์๋ก ์์๋ฌ์ผํ๋ ๊ฐ๋
์ด๋ค.
์ด๋ฅผ ํ์คํ ์ดํดํด์ผ ๋ ๋๋ง ์ต์ ํ๋ฅผ ์ํํ์ฌ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋ค.
- HTML, CSS, JavaScript ๋ฑ ๊ฐ๋ฐ์๊ฐ ์์ฑํ ๋ฌธ์๋ค์ ๋ธ๋ผ์ฐ์ ๊ฐ ํ๋ฉด์ ๊ทธ๋ ค์ฃผ๋ ๋์์ ๋งํ๋ค.
- ๊ฐ ๋ธ๋ผ์ฐ์ ๋ ๋ ๋๋ง์ ํ๊ธฐ ์ํด ๊ฐ๊ฐ์ ๋ ๋๋ง ์์ง์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ๋ธ๋ผ์ฐ์ ๋ง๋ค ์ข ๋ฅ๊ฐ ๋ค๋ฅผ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ ๋๋ง ์์ง์ ์ด๋ป๊ฒ ๋์ํ ๊น?
๋ ๋๋ง ์์ง์ ๋์ ๊ณผ์ ์ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํฌ๊ฒ 4๊ฐ์ง๋ก ๋๋ ์ ์๋ค.
๋ธ๋ผ์ฐ์ ๋ ๋ ๋๋ง์ ์ํด ์ฒ์์ผ๋ก HTML๊ณผ CSS๋ฅผ ์ฝ๊ฒ ๋๋๋ฐ ์ด๋ ๋จ์ํ ํ
์คํธ์ด๊ธฐ ๋๋ฌธ์, ๊ฐ๊ฐ ์ฐ์ฐ๊ณผ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋๋ก HTML Parser์ CSS Parser๋ฅผ ์ด์ฉํด DOM(Document Obhect Model), CSSOM(CSS Object Model)์ ์์ฑ
ํ๋ค.
์ ๋จ๊ณ์์ ๋ง๋ค์ด์ง DOM ํธ๋ฆฌ์ CSSOM ํธ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ๋ ๋ ํธ๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ค.
๋ ๋ ํธ๋ฆฌ๋ DOM ํธ๋ฆฌ์ CSSOM ํธ๋ฆฌ๊ฐ ํฉ์ณ์ ธ ๋ง๋ค์ด์ง ํธ๋ฆฌ
๋ก, ๋ธ๋ผ์ฐ์ ์ ์ต์ข
์ ์ผ๋ก ํ์๋ ๊ฒ๋ค๋ก ๊ตฌ์ฑ๋์ด์๋ค. ์ด ๊ณผ์ ์ Attachment
๋ผ๊ณ ํ๋ค.
์ค์ ํ๋ฉด์ ํํ๋ ๋
ธ๋๋ค๋ก๋ง ๊ตฌ์ฑ๋๋ค๋ ๋ง์
์๋ฅผ ๋ค์ด, display: none
์์ฑ์ด ์ ์ฉ๋ ์์๋ ๋ ๋ ํธ๋ฆฌ์์ ์ ์ธ๋๋ค.
(visibility: hidden
์์ฑ์ด ์ ์ฉ๋ ์์๋ ๋ ๋ ํธ๋ฆฌ์ ์กด์ฌํ๋ค.)
๊ทธ ์ด์ ๋, display: none
์ ์์ ์์ฒด๊ฐ ๋ณด์ด์ง์๊ณ ๊ณต๊ฐ๋ ์ฐจ์งํ์ง์๋ ๋ฐ๋ฉด,
visibility: hidden
์ ์์ ์์ฒด๋ ๋ณด์ด์ง์์ง๋ง ๊ณต๊ฐ์ ์ฐจ์งํ๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ ๋ ํธ๋ฆฌ๊ฐ ์์ฑ๋๋ฉด ๋ธ๋ผ์ฐ์ ์ ๋ทฐํฌํธ ๋ด์ ๊ฐ ๋
ธ๋๋ค์ ์ ํํ ์์น์ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํ๋ค.
%, vh, vw ๊ฐ์ ์๋์ ์ธ ์์น์ ํฌ๊ธฐ ์์ฑ์ ๋ชจ๋ ์ค์ ํ๋ฉด์ ๊ทธ๋ ค์ง๋ px๋จ์๋ก ๋ณํ๋๋ค.
๋ ์ด์์ ๋จ๊ณ์์ px๋จ์๋ก ๊ณ์ฐ์ด ์๋ฃ๋ ์์๋ค์ ์ค์ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ๋จ๊ณ
์ด๋ค.
ํฌ๊ธฐ, ์์น์ ๊ด๊ณ์๋ CSS ์์ฑ(์์, ํฌ๋ช
๋) ๋ฑ
์ ํ์ธํธ ๋จ๊ณ์์ ์ ์ฉํ๋ค.
์ด๋ ์ฒ๋ฆฌํด์ผํ๋ ์คํ์ผ์ด ๋ณต์กํ ์๋ก ํ์ธํธ ๋จ๊ณ์์ ์์๋๋ ์๊ฐ์ด ๊ธธ์ด์ง๋ค.
์์ 4๊ฐ์ง ๊ณผ์ ์ด ์๋ฃ๋์๋ค๊ณ ํด์ ๋ ๋๋ง ๊ณผ์ ์ด ๋ชจ๋ ๋๋ ๊ฒ์ ์๋๋ค.
๋ง์ฝ HTML, CSS ์์์ ํฌ๊ธฐ, ์์น ๋ฑ์ ์์ ํ๋ฉด 3. ๋ ๋ ํธ๋ฆฌ ๋ฐฐ์น(Layout)๊ณผ์ ์ ๋ค์ ์ํ
ํ๊ฒ ๋๋ค.
๋ ๋ ํธ๋ฆฌ์ ๊ฐ ์์๋ค์ ํฌ๊ธฐ์ ์์น๋ฅผ ๋ค์ ๊ณ์ฐํ๋ ๊ณผ์ : Reflow
Reflow๋ ๋ ๋ ํธ๋ฆฌ๋ฅผ ๋ค์ ํ๋ฉด์ ๊ทธ๋ ค์ฃผ๋ ๊ณผ์ : Repaint
Reflow๊ฐ ์ผ์ด๋๋ ๋ํ์ ์ธ ๊ฒฝ์ฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ํ์ด์ง ์ด๊ธฐ ๋ ๋๋ง ์(์ต์ด Layout ๊ณผ์ )
- viewport ํฌ๊ธฐ ๋ณ๊ฒฝ ์
- ๋ ธ๋ ์ถ๊ฐ ๋๋ ์ ๊ฑฐ
- ์์์ ์์น, ํฌ๊ธฐ ๋ณ๊ฒฝ
- ํฐํธ ๋ณ๊ฒฝ, ์ด๋ฏธ์ง ํฌ๊ธฐ ๋ณ๊ฒฝ
Reflow ๊ณผ์ ํ ์ค์ ๋ก ํ๋ฉด์ ๊ทธ๋ ค์ฃผ๊ธฐ ์ํ Repaint ๊ณผ์
์ด ํ์ํ๋ค.
๋ง์ฝ ์์, ํฌ๋ช
๋์ ๊ฐ์ ์์ฑ์ ๋ณ๊ฒฝ๊ณผ ๊ฐ์ด ๋ ์ด์์์๋ ์ํฅ์ ์ฃผ์ง์๋ ์คํ์ผ ์์ฑ์ด ๋ณ๊ฒฝ๋์์ ๊ฒฝ์ฐ์๋ Repaint ๊ณผ์ ๋ง ์ํ
ํ๊ฒ ๋๋ค.
๋ฐ๋ผ์, ์ฐ๋ฆฌ๋ ๋ธ๋ผ์ฐ์ ๋ ๋๋ง ์ต์ ํ๋ฅผ ์ํด Reflow๋ฅผ ์ต์ํํด์ผ ํ ํ์๊ฐ ์๋ค.
์ด์ ๊ด๋ จํ ๋ ๋๋ง ์ต์ ํ ๋ฐฉ๋ฒ ๋ช๊ฐ์ง๋ฅผ ์์๋ณด์!
Reflow๊ฐ ์ผ์ด๋๋ฉด ์ ์ฒด px์ ๋ค์ ๊ณ์ฐํด์ผํ๊ณ , ํ์ฐ์ ์ผ๋ก Repaint๊ฐ ์ํ๋์ด์ผํ๊ธฐ ๋๋ฌธ์, Repaint๋ง ์ํ๋๋ ์์ฑ์ ์ฌ์ฉ
ํ๋ ๊ฒ์ด ์ข๋ค.
Reflow์ Repaint ์์ฑ ์์๋ณด๊ธฐ
์ ๋๋ฉ์ด์ ์ด๋ ๋ ์ด์์ ๋ณํ๊ฐ ๋ง์ ์์์ ๊ฒฝ์ฐ position ์์ฑ์ absolute ๋๋ fixed๋ฅผ ์ฌ์ฉํ์ฌ ์ํฅ์ ๋ฐ๋ ์ฃผ๋ณ ๋ ธ๋๋ค์ ์ค์ด๋ ๊ฒ์ด ์ข๋ค.
๋ถ๋๋ฌ์ด ํจ๊ณผ๋ฅผ ์กฐ๊ธ ์ค์ฌ ์ฑ๋ฅ ๊ฐ์ ๋ ๊ฐ๋ฅํ๋ค.
์๋ฅผ ๋ค์ด, 0.1์ด์ 1px์ฉ ์ด๋ํ๋ ์์๋ณด๋ค 3px์ฉ ์ด๋ํ๋ ์์๊ฐ ์ฐ์ฐ ๋น์ฉ์ด 3๋ฐฐ ์ค์ด๋ ๋ค๊ณ ํ ์ ์๋ค.