๋ธ๋ผ์ฐ์ ๋ ๋๋ง
๋ธ๋ผ์ฐ์ ๋ ๋๋ง(rendering)์ด๋ HTML, CSS, JavaScript ๋ฑ ๊ฐ๋ฐ์๊ฐ ์์ฑํ ๋ฌธ์๊ฐ ๋ธ๋ผ์ฐ์ ์์ ์ถ๋ ฅ๋๋ ๊ณผ์ ์ ์๋ฏธํ๋ค. ๋ธ๋ผ์ฐ์ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ๋๋ง์ ์ํํ๋ ๋ ๋๋ง ์์ง์ ๊ฐ์ง๊ณ ์๋ค.
๋ธ๋ผ์ฐ์ ๋ ๋๋ง ๊ณผ์
- ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์น ์ฌ์ดํธ์ ์ ์ํ๋ค.
- ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๋ก๋ถํฐ HTML, CSS, JavaScript์ ๊ฐ์ ํ์ํ ๋ฆฌ์์ค๋ฅผ ๋ค์ด๋ฐ๋๋ค.
- ๋ ๋๋ง ์์ง์ ์ ๋ฌ๋ฐ์ HTML ๋ฌธ์๋ฅผ ํ์ฑํด DOM(๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ) ํธ๋ฆฌ๋ฅผ ๋ง๋ ๋ค.
- ์ด์ด์ ๋ค์ด๋ฐ์ ์ธ๋ถ CSS ํ์ผ๊ณผ ํจ๊ป ํฌํจ๋ ์คํ์ผ ์์๋ฅผ ํ์ฑํด CSSOM(CSS ๊ฐ์ฒด ๋ชจ๋ธ) ํธ๋ฆฌ๋ฅผ ๋ง๋ ๋ค.
- ๋ง๋ DOM ํธ๋ฆฌ์ CSSOM ํธ๋ฆฌ๋ฅผ ๊ฒฐํฉํด Render ํธ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๋ค.
- ๋ ์ด์์ ๊ณผ์ ์ ํตํด ๊ฐ ์์๋ฅผ ์ด๋์ ๋ฐฐ์นํ ์ง ๊ฒฐ์ ํ๋ค.
- ๋ ์ด์์ ๊ณผ์ ์ด ๋๋๋ฉด UI ๋ฐฑ์๋์์ Render ํธ๋ฆฌ๋ฅผ ํ๋ฉด์ ๊ทธ๋ฆฌ๊ธฐ ์์ํ๋ค. ์ด ๊ณผ์ ์ paint๋ผ๊ณ ํ๋ค.
ํ์ฑ(Parsing)
ํ์ฑ์ด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑ๋ ํ์ผ์ ์คํ์ํค๊ธฐ ์ํด ๊ตฌ๋ฌธ ๋ถ์(syntax analysis)์ ํ๋ ๋จ๊ณ์ด๋ค. ํ์(parser)๊ฐ ์งํํ๋ฉฐ, ์ผ์ข ์ ์ธํฐํ๋ฆฌํฐ๋ ์ปดํ์ผ๋ฌ ๊ตฌ์ฑ ์์ ๊ฐ์ด๋ฐ ํ๋์ด๋ค. ํ์๋ HTML ํ์ผ์ ์ฝ๋๋ฅผ ๋ฌธ๋ฒ์ ์๋ฏธ๋ฅผ ๊ฐ๋ ์ต์ ๋จ์์ธ ํ ํฐ(token)์ผ๋ก ํ ๋ฒ ๋ถํดํ๊ณ , ์ด ํ ํฐ๋ค์ ๋ฌธ๋ฒ์ ์๋ฏธ์ ๊ตฌ์กฐ์ ๋ฐ๋ผ ๋ ธ๋(node)๋ผ๋ ์์๋ก ๋ฐ๊พธ์ด ์ํ ๊ด๊ณ์ ๋ฐ๋ผ ํ๋์ ํธ๋ฆฌ๋ฅผ ํ์ฑํ๊ฒ ๋๋ค. ์ด ํธ๋ฆฌ๋ฅผ ํ์ค ํธ๋ฆฌ(parse tree) ํน์ ๋ฌธ๋ฒ ํธ๋ฆฌ(syntax tree)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋ฌธ์ ํ์ฑ(document parsing)์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ฝ๋๋ฅผ ์ดํดํ๊ณ ์ฌ์ฉํ ์ ์๋ ๊ตฌ์กฐ๋ก ๋ณํํ๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ, ๋ ๋๋ง ๊ณผ์ ์์๋ HTML ํ์ผ์ ๋ฐํ์ผ๋ก DOM ํธ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๊ณ CSS ํ์ผ๋ก CSSOM ํธ๋ฆฌ๋ฅผ ๋ง๋๋ ๊ฒ์ ํ์ฑํ๋ค๊ณ ํํํ๋ค.
๋ธ๋ผ์ฐ์ ๋ HTML ํ์ผ์ ๋ฐ์๋ค๋ฉด HTML ํ ํฐ์ ์์ฑํ๊ณ ์ด ํ ํฐ์๋ ์์ ํ๊ทธ์ ๋ง์นจ ํ๊ทธ, ์์ฑ ์ด๋ฆ๊ณผ ๊ฐ๋ ํฌํจ๋๋ค. ์ด ํ ํฐ์ ํ์์ ์ํด ๋ ธ๋๋ก ๋ฐ๋๊ณ , ๋ ธ๋๋ฅผ ๊ตฌ์ฑ ์์ ์ผ์ ์ต์ข ์ ์ผ๋ก ํธ๋ฆฌ ๊ตฌ์กฐ์ DOM์ผ๋ก ๊ตฌ์ฑ๋๋ค.
๋ธ๋ผ์ฐ์ ๋ HTML ๋ฌธ์๋ฅผ ํ์ฑํ๋ฉด์ CSS ์คํ์ผ์ ๋ง๋๋ฉด ํ
์คํธ๋ฅผ CSS ์คํ์ผ๋ง ๋ ์ด์์๊ณผ ํ์ธํ
์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ธ CSSOM ํธ๋ฆฌ๋ก ํ์ฑํ๊ณ <link>
, <style>
ํ๊ทธ๋ฅผ ๋ง๋ ๊ฒฝ์ฐ ๋ ๋๋ง์ ์ฐจ๋จํ๋ฉด์ HTML ํ์ฑ ๋ํ ์ค๋จํ๋ค. ์ด์ด script ํ์ผ์ ๋ค์ด ๋ฐ์ ํ์ฑํ๊ณ ์คํ์ํจ ๋ค ๋ค์ HTML ํ์ผ์ ํ์ฑํ๊ธฐ ์์ํ๋ค.
ํ์ฑ์ ๋ฌธ์์ ์์ฑ๋ ์ธ์ด ๋๋ ํ์์ ๊ท์น์ ๋ฐ๋ฅด๋๋ฐ, ํ์ฑํ ์ ์๋ ๋ชจ๋ ํ์์ ์ ํด์ง ์ฉ์ด์ ๊ตฌ๋ฌธ ๊ท์น์ ๋ฐ๋ผ์ผ ํ๋ค. ๋ฐ๋ผ์ ํ์์ ์ ๊ฐ์ถ ๋ฌธ์๋ผ๋ฉด ํ์ฑ ๊ณผ์ ์ ์ง๊ด์ ์ด๊ณ ๋น ๋ฅด๊ฒ ์งํ๋๋ค.
DOM Tree
DOM์ HTML ๋ฌธ์์ ์์๋ค์ ์ค์ฒฉ ๊ด๊ณ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ ธ๋๋ค์ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑํ ๊ฒ์ ์๋ฏธํ๋ค. ๋ธ๋ผ์ฐ์ ๋ JavaScript ์ธ์ด๋ง ์์๋ค์ ์ ์์ด HTML์ ํ๊ทธ๋ ์์ฑ๋ค์ ์ดํดํ์ง ๋ชปํ์ง๋ง ์๋ต์ผ๋ก ๋ฐ์์จ HTML ๋ฌธ์๋ ํ ์คํธ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ์ดํดํ ์ ์๋ ํํ์ธ ๊ฐ์ฒด๋ก ๋ฐ๊ฟ์ค ๊ฒ์ด DOM ํธ๋ฆฌ์ด๋ค.
CSSOM Tree
html ํ์ผ์ DOM ํธ๋ฆฌ๋ก ํ์ฑํ๋ ๋ธ๋ผ์ฐ์ ๋ <link>
, <style>
ํ๊ทธ๋ฅผ ๋ง๋๋ฉด ํ์ฑ์ ์ ์ ๋ฉ์ถ๊ณ ํด๋น ๋ฆฌ์์ค ํ์ผ์ ์๋ฒ๋ก ์์ฒญํ๋ค. ์ด๋ ๊ฒ ์์ฒญํ ํ์ผ์ html ํ์ผ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ํ์ฑ์ ํ๋๋ฐ, ํ์ผ์ ํ์ฑํด ๋ง๋ ํธ๋ฆฌ๋ฅผ CSSOM์ด๋ผ๊ณ ํ๋ค. CSSOM ํธ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๊ณ ๋๋ฉด ๋ธ๋ผ์ฐ์ ๋ ๋ค์ html ํ์ผ์ ํ์ฑ์ ๋ฉ์ท๋ ๋ถ๋ถ์ผ๋ก ๋์๊ฐ์ ๋ง์ DOM ํธ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๋ค.
๋ ๋ ํธ๋ฆฌ(Render Tree)
DOM ํธ๋ฆฌ์ CSSOM ํธ๋ฆฌ๋ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋์ด ์์ด ๋น์ทํ๊ฒ ์๊ฒผ์ง๋ง ์ ์ด์ ๋ฆฌ์์ค๋ถํฐ ํ๋ฆฐ ์๋ก ๋ค๋ฅธ ์์ฑ์ ๊ฐ์ง ๋ ๋ฆฝ์ ์ธ ํธ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ์์ ์น ์ฌ์ดํธ๋ฅผ ํ์ํ๊ธฐ ์ํด์๋ ์ด ๋์ ํฉ์น๋ ์์ ์ด ๋ฐ๋์ ํ์ํ๋ค.
๋ ๋ ํธ๋ฆฌ๋ ์ด๋ฆ์ฒ๋ผ ๋ ๋๋ง์ ๋ชฉ์ ์ผ๋ก ๋ง๋ค์ด์ง๋ ํธ๋ฆฌ์ด๋ค. ๋ ๋๋ง์ ์ฌ์ฉ์์๊ฒ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ณด์ฌ์ฃผ๊ณ ์ ํ๋ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ๊ณผ์ ์ด๊ธฐ ๋๋ฌธ์, ๋ณด์ด์ง ์์ ์์๋ค์ ์ด ํธ๋ฆฌ์ ํฌํจ์ํค์ง ์๋๋ค. ์๋ฅผ ๋ค์ด DOM ํธ๋ฆฌ์ <meta>
๋ CSSOM ํธ๋ฆฌ์ display:none
๊ณผ ๊ฐ์ด ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ์ง ์์๋ ๋๊ฑฐ๋, ๋ณด์ฌ์ฃผ์ง ๋ง์์ผ ํ ํ๊ทธ๋ ์์๋ ๋ ๋ ํธ๋ฆฌ์์ ์ ์ธ๋๋ค.
๋ ์ด์์
๋ธ๋ผ์ฐ์ ๋ ๋๋ง์์ ๋ ์ด์์ ๊ณผ์ ์ ๋ ๋ ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก HTML ์์์ ๋ ์ด์์(์์น, ํฌ๊ธฐ ๋ฑ)์ ๊ณ์ฐํ์ฌ ๋ธ๋ผ์ฐ์ ํ๋ฉด ์ด๋์ ๋ฐฐ์นํ ์ง ๊ฒฐ์ ํ๋ ๊ณผ์ ์ด๋ค.
๋ ๋ ํธ๋ฆฌ๋ ํ์ธํ ์์ ์ ๊ฑฐ์น๊ธฐ ์ ๊น์ง๋ ํ ์คํธ๋ก ๊ตฌ์ฑ๋ ๊ฐ์ฒด๋ก๋ง ๋ณด์ด๋ ์ํ์ด๊ณ , ๊ฐ ์์์ ๊ด๋ จํ ์ ๋ณด๋ง ๋ด๊ณ ์๋ค. ๋ ์ด์์ ๊ณผ์ ์ ์ด๋ฐ ์ ๋ณด๋ฅผ ํ ๋๋ก ๊ฐ ์์๋ค์ด ์ ์ฒด ํ๋ฉด์์ ์ด๋์, ์ด๋ค ํฌ๊ธฐ๋ก, ์ด๋ป๊ฒ ๋ฐฐ์น๋์ด์ผ ํ๋์ง ๋ ๋ ํธ๋ฆฌ๋ฅผ ์์์ ์๋๋ก ์ฝ์ด ๋ด๋ ค๊ฐ๋ฉฐ ๊ณ์ฐํ๋ ๊ณผ์ ์ด๋ฉฐ, ๋ชจ๋ ๊ฐ์ ์ ๋ ๋จ์์ธ px ๊ฐ์ผ๋ก ๋ณํ๋๋ค.
ํ์ธํธ
๋ ์ด์์์์ ์์น์ ๋ํ ๊ณ์ฐ์ ๋ง์น๋ฉด ๊ฒฐ์ ๋ ๋๋ก ํ๋ฉด์ ์ค์ ๋ก ๊ทธ๋ฆฌ๋ ์์ ์ ์งํํ๋ ๊ฒ์ ํ์ธํธ์ด๋ผ ํ๋ค. ์์์ ๋งํ๋ ๊ฒ ์ฒ๋ผ ๋ ์ด์์ ๊ณผ์ ์์ ๋ชจ๋ ๊ฐ์ ์ ๋ ๋จ์์ธ px๊ฐ์ผ๋ก ๋ณํํ๋๋ฐ, ํ์ธํธ๋ ์ด๋ฐ ํฝ์ ์ ๋ํ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ํฝ์ ์ ์ฑ์๋๊ฐ๋ ๊ณผ์ ์ธ ๊ฒ์ด๋ค.
๋ฆฌํ๋ก์ฐ(Reflow) / ๋ฆฌํ์ธํธ(Repaint)
์ด๋ค ์น ์ธํฐ๋์ (๋ธ๋ผ์ฐ์ ์ ์ฐฝ ํฌ๊ธฐ ์กฐ์ , ๋ค๋ฅธ ์ฌ์ดํธ๋ก์ ์ด๋ ๋ฑ)์ผ๋ก ์ธํด ํ๋ฉด์ ๋ํ๋๋ ๋ชจ์ต์ ๋ฐ๊พธ์ด์ผ ํ ๋ ์ผ์ด๋๋ ๊ณผ์ ์ ๊ฐ๊ฐ ๋ฆฌํ๋ก์ฐ, ๋ฆฌํ์ธํธ๋ผ ํ๋ค.
- ๋ฆฌํ๋ก์ฐ(Reflow) : ๋ ์ด์์ ๊ณผ์ ์ ๋ฐ๋ณตํด ์ํํ๋ ๊ฒ
- ๋ฆฌํ์ธํธ(Repaint) : ํ์ธํธ ๊ณผ์ ์ ๋ฐ๋ณตํด ์ํํ๋ ๊ฒ
const div = document.createElement('div');
document.body.append(div);
div.textContent = 'hello world';
์์ ์์์ฒ๋ผ JavaScript๋ฅผ ํตํด DOM์ ์กฐ์ํ๊ฒ ๋๋ฉด DOM ํธ๋ฆฌ๋ฅผ ๋ค์ ๊ตฌ์ฑํ๋ ๊ฒ์ผ๋ก ์์ํด ์ ๋ ๋ ํธ๋ฆฌ๋ฅผ ์์ฑํ๊ณ ๋ ์ด์์๊ณผ ํ์ธํธ ๊ณผ์ ์ ๊ฑฐ์ณ ๋ค์ ํ๋ฉด์ ๋ณด์ฌ์ค๋ค. DOM ์กฐ์์ ๋ฆฌํ๋ก์ฐ, ๋ฆฌํ์ธํธ๊ฐ ์ผ์ด๋๋ ๋ํ์ ์ธ ์์์ด๋ค.
๋ฆฌํ๋ก์ฐ์ ๋ฆฌํ์ธํธ์ ์ต์ ํ
์ฌ์ฉ์์ ๋์ ์ผ๋ จ์ ๊ณผ์ ์ด ๋ถ๋๋ฝ๊ฒ ์ฒ๋ฆฌ ๋๋ ค๋ฉด ์ด๋น 60ํ๋ ์(60 FPS)์ ๋ฐ๋์ ์ ์ง์์ผ์ผ ํ๋ค. ์ฆ, 1์ด ์์ ๋ธ๋ผ์ฐ์ ๋ 50์ฅ ๊ฐ๋์ ๋ ์ด์์๊ณผ ํ์ธํธ ๊ณผ์ ์ ๋์์ ์ฒ๋ฆฌํด์ผ ํ๋ค๋ ์๋ฏธ์ด๋ค.
ํ์ง๋ง DOM์ ๋ณ๊ฒฝ์ด ๋๋ฉด ๋ ๋ ํธ๋ฆฌ๋ฅผ ๋ค์ ๊ตฌ์ถํ๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝ์ด ๋ ๋๋ง๋ค ๋ฆฌํ๋ก์ฐ์ ๋ฆฌํ์ธํธ๋ฅผ ๋ค์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด ๊ณผ์ ์์ ๋ฆฌํ๋ก์ฐ๋ ๋ฐฐ์น๋ฅผ ์ํ ์ฐ์ฐ์ผ๋ก ์ธํด CPU๋ฅผ ๋ง์ด ์ฐจ์งํ๊ณ , ๋ฆฌํ์ธํธ๋ ํฝ์ ์ ๋ค์ ํ๋ฉด์ ์ฐ์ด ๊ทธ๋ ค์ผ ํด GPU๋ฅผ ๋ง์ด ์ฐจ์งํ๊ฒ ๋๋ค. ์ด๋ฐ ํ์์ ๊ฒฐ๊ตญ ํ๋ ์ ๋๋ ํ์๊ณผ ์ง์ ์ ์ฐ๊ด์ด ์๊ธด๋ค.
ํ๋ ์ ๋๋์ 60 FPS๋ฅผ ์ ์งํ๋ ์ํฉ์์ ๋ธ๋ผ์ฐ์ ์ ๊ณผ๋ถํ๋ก ์ธํด ํ๋ ์ ์๊ฐ ์ค์ด๋๋ ํ์์ ๋ปํ๋ค. ํ๋ ์ ์๊ฐ ์ค์ด๋ค๋ฉด ์ ์ ๋ ํด๋น ํ์์ โํ๋ฉด์ด ๋ฉ์ถ๋คโ, โ๋ฒ๋ฒ ์ธ๋คโ๊ณ ๋๋ผ๊ฒ ๋์ด UX์ ์ ์ํฅ์ ์ฃผ๊ธฐ ๋๋ฌธ์ ์ต์ ํ๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ค.
์ต๊ทผ ๋ชจ๋ ์น ๋ธ๋ผ์ฐ์ ๋ ์ฑ๋ฅ์ด ๋งค์ฐ ๋ฐ์ด๋ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํฌ๊ฒ ์ฑ๋ฅ ๊ฐ์ ์ ๊ณ ๋ คํ ํ์์ฑ์ ๋๋ผ์ง ๋ชปํ์ง๋ง, ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ๋ค์ํ๊ณ ๋ณต์กํ ์๊ตฌ ์ฌํญ์ ๋์ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ง๊ณ ํ๋ฉด์ด ๋ผ์ด๋ธ ๋ฐ์ดํฐ์ ๋ฐ๋ผ ์ค์๊ฐ์ผ๋ก ๋น ๋ฅด๊ฒ ์ ๋ง์ ๋ณ๊ฒฝ์ ์ผ์ผ์ผ์ผ ํ๋ ๊ฒฝ์ฐ๋ ์๊ธฐ๊ธฐ ๋๋ฌธ์ ๊ผญ ์์งํ๋ ๊ฒ์ด ์ข๋ค.
๋ถํ์ํ ๋ ์ด์์ ์ค์ด๊ธฐ
๋ ์ด์์ ๊ณผ์ ์์ ๋ถํ์ํ๊ฒ ๊ณ์ฐํ ๊ฒ์ด ๋ง์์ง๋ฉด ์์ง๋ ๊ฒฐ๊ตญ ์ปดํจํ ํ์์ ๊ธฐ๋๊ธฐ ๋๋ฌธ์ ๊ณผ๋ถํ๊ฐ ๋ถ๊ฐํผํ๊ฒ ์๊ธฐ๊ฒ ๋๋ค. ๋ฐ๋ผ์ ๋ถํ์ํ ๋ ์ด์์์ ์ค์ธ๋ค๋ฉด ๋ ๋๋ง ํผํฌ๋จผ์ค ์ต์ ํ๋ฅผ ๊ธฐ๋ํ ์ ์๋ค.
CSSOM ํธ๋ฆฌ์ CSS ์์ฑ ์ค ๋ ์ด์์์ ๋ฐ์์ํค๋ ํน์ ์์ฑ๋ค์ด ์๋๋ฐ, ์ด ์์ฑ์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๊ทธ๋๋ง๋ค ๋ณ๊ฒฝ์ด ๋์ด ๋ฆฌํ๋ก์ฐ์ ๋ฆฌํ์ธํธ๊ฐ ์ฐ์์ ์ผ๋ก ๋ฐ์ํ๊ฒ ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฐ ๋ ์ด์์์ ๋ฐ์์ํค๋ ์์ฑ์ ํผํ๋ฉด ํด๋น ๊ณผ์ ์ด ๋ฐ์ํ๋ ํ์๋ฅผ ์ค์ผ ์ ์๋ค.
CSS์์ ๋ ์ด์์, ํ์ธํธ๋ฅผ ๋ฐ์์ํค๋ ์์ฑ๋ค
๋ ์ด์์๊ณผ ํ์ธํธ ๊ณผ์ ์ ๋ณ๊ฐ์ ๊ณผ์ ์ฒ๋ผ ๋ณด์ผ ์ ์์ง๋ง ๋ฆฌํ๋ก์ฐ ์ ๋ฆฌํ์ธํธ๋ ํ์ฐ์ ์ผ๋ก ์ผ์ด๋๋ฏ๋ก ๊ฐ๋ฅํ๋ฉด ๋ฆฌํ๋ก์ฐ๊ฐ ๋ฐ์ํ๋ ์์ฑ๋ณด๋ค ๋ฆฌํ์ธํธ๋ง ๋ฐ์ํ๋ ์์ฑ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ํ์ธํธ ๊ณผ์ ์ ์ ์ ์๊ฒ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ํ์์ ์ธ ๊ณผ์ ์ด๊ธฐ ๋๋ฌธ์, ๋ธ๋ผ์ฐ์ ๋ ๋๋ง ์ต์ ํ ์ธก๋ฉด์์๋ ๋ ์ด์์์ด ์ผ์ด๋๋ ์ํฉ์ ์ต๋ํ ํผํ๋ ๊ฒ์ด ์ข๋ค.
- ๋ฆฌํ๋ก์ฐ๊ฐ ์ผ์ด๋๋ ๋ํ์ ์ธ ์์ฑ
position
width
height
l
eft
top
right
bottom
margin
padding
border
border-width
clear
display
float
font-family
font-size
font-weight
line-height
min-height
overflow
text-align
vertical-align
... ๋์ฒด์ ์ผ๋ก ์์น, ๋๋น์ ๊ด๋ จ๋ ์์ฑ์ด ๋ง๋ค. ์ด ์ค
left
๋ฑposition
๊ณผ ํจ๊ป ์ฌ์ฉ๋๋ ์์น ์์ฑ์ ์ด์ฉํด ์ ๋๋ฉ์ด์ ์ ๋ง๋๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ, ์ด ๊ฒฝ์ฐ ํ๋ ์ ์ ์ง๋ฅผ ๋ณด์ฅํ๊ธฐ ์ด๋ ต๋ค.๊ทธ๋์ ์ด ์์ฑ์ ํผํด ์ฌ์ฉ๋๋ ๊ฒ์ด
transform
์ด๋ค.transform
์ ์๋translate
๋ฅผ ์ฌ์ฉํ๋ฉด ์ขํ ๊ฐ์ ์ฌ์ฉํด ์์น๋ฅผ ์ด๋ํ์ง๋ง, ๋ ์ด์์์ ๋ฐ์์ํค์ง ์๊ณ ํ์ธํธ๋ง ๋ค์ ๋ฐ์์ํค๋ ์ชฝ์ผ๋ก ๋ ๋๋ง ๊ณผ์ ์ด ์ผ์ด๋๊ธฐ ๋๋ฌธ์ ์ ์งํ๊ณ ์ ํ๋ ํ๋ ์ ์๋ฅผ ๊ธฐ๋ํ ์ ์๋ค.
- ๋ฆฌํ์ธํธ๊ฐ ์ผ์ด๋๋ ๋ํ์ ์ธ ์์ฑ
background
background-image
background-position
background-repeat
background-size
border-radius
border-style
outline-color
color
line-style
outline
clear
display
float
font-family
font-size
font-weight
box-shadow
visibility
... visibility
/display
๋์ ๋ฆฌํ์ธํธ๊ฐ ์ผ์ด๋์ง ์๊ฒ ํด์ฃผ๋opacity
์์ฑ์ ๊ณ ๋ คํ ์๋ ์๋ค.
์ํฅ์ ์ฃผ๋ ๋ ธ๋ ์ค์ด๊ธฐ
JavaScript + CSS๋ฅผ ์กฐํฉํ ์ ๋๋ฉ์ด์
์ด ๋ง๊ฑฐ๋, ๋ ์ด์์ ๋ณํ๊ฐ ๋ง์ ์์์ ๊ฒฝ์ฐ position
์ absolute
๋๋ fixed
๋ฅผ ์ฌ์ฉํด์ฃผ๋ฉด ์ํฅ์ ๋ฐ๋ ์ฃผ๋ณ ๋
ธ๋๋ค์ ์ค์ฌ์ค ์ ์๋ค. ํนํ fixed
์ ๊ฐ์ด ์ํฅ์ ๋ฐ๋ ๋
ธ๋๊ฐ ์ ํ ์๋ ๊ฒฝ์ฐ ๋ฆฌํ๋ก์ฐ ๊ณผ์ ์ด ํ์์์ด ๋ฆฌํ์ธํธ ์ฐ์ฐ ๋น์ฉ๋ง ๋ค์ผ ์ ์๋ค.
Uploaded by N2T