์ต์ ์น ๋ธ๋ผ์ฐ์ ์ ๋ ์ด์์ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ์ธ CSS ๊ณ ์ ํฌ๊ธฐ ์บ์๋ฅผ ์ดํด๋ณด์ธ์. ์๋ ๋ฐฉ์, ์ด์ , ๊ทธ๋ฆฌ๊ณ ๋ ๋น ๋ฅด๊ณ ๋ถ๋๋ฌ์ด ์น ๊ฒฝํ์ ์ํด ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
CSS ๊ณ ์ ํฌ๊ธฐ ์บ์ ํํค์น๊ธฐ: ๋ ์ด์์ ์ฑ๋ฅ ์ต์ ํ
๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์น์ฌ์ดํธ๋ฅผ ํฅํ ๋์์๋ ์ถ๊ตฌ ์์์, ์น ๊ฐ๋ฐ์๋ค์ ๋ ๋๋ง ์ฑ๋ฅ์ ์ต์ ํํ ๋ฐฉ๋ฒ์ ๊ณ์ํด์ ์ฐพ๊ณ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ๋์์ ์ค์ํ์ง๋ง ์ข ์ข ๊ฐ๊ณผ๋๋ ์ธก๋ฉด ์ค ํ๋๊ฐ ๋ฐ๋ก CSS ๊ณ ์ ํฌ๊ธฐ ์บ์(CSS Intrinsic Size Cache)์ ๋๋ค. ์ด ๋ฉ์ปค๋์ฆ์ ๋ธ๋ผ์ฐ์ ๊ฐ ์์ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํ๊ณ ์บ์ํ๋ ๋ฐฉ์์ ์ค์ํ ์ญํ ์ ํ์ฌ, ๋ ์ด์์ ์ฑ๋ฅ๊ณผ ์ ๋ฐ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
CSS ๊ณ ์ ํฌ๊ธฐ๋ ๋ฌด์์ธ๊ฐ?
์บ์์ ๋ํด ์์๋ณด๊ธฐ ์ ์, ๊ณ ์ ํฌ๊ธฐ(intrinsic size)์ ๊ฐ๋
์ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ช
์์ ์ผ๋ก ์ ์๋ ํฌ๊ธฐ(์: width: 200px;)์ ๋ฌ๋ฆฌ, ๊ณ ์ ํฌ๊ธฐ๋ ์์์ ์ฝํ
์ธ ์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. ๋ค์ ์์๋ฅผ ์ดํด๋ณด์ธ์:
- ์ด๋ฏธ์ง: ์ด๋ฏธ์ง์ ๊ณ ์ ํฌ๊ธฐ๋ ์ด๋ฏธ์ง ํ์ผ ์์ฒด์์ ํ์๋ ์์ฐ์ค๋ฌ์ด ๋๋น์ ๋์ด์ ๋๋ค (์: 1920x1080 JPEG).
- ํ ์คํธ: ํ ์คํธ ๋ธ๋ก์ ๊ณ ์ ํฌ๊ธฐ๋ ๊ธ๊ผด ํฌ๊ธฐ, ๊ธ๊ผด ๊ณ์ด, ํ ์คํธ ๊ธธ์ด์ ๊ฐ์ ์์ธ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
- ๋์ฒด ์์(<video>, <canvas> ๋ฑ): ์ด๋ฌํ ์์๋ค์ ํ์ํ๋ ์ฝํ ์ธ ๋ก๋ถํฐ ๊ณ ์ ํฌ๊ธฐ๋ฅผ ์ป์ต๋๋ค.
์์์ ๋ช
์์ ์ผ๋ก ์ ์๋ ๋๋น๋ ๋์ด๊ฐ ์์ ๋, ๋ธ๋ผ์ฐ์ ๋ ๋ถ๋ชจ ์ปจํ
์ด๋ ๋ด์ min-width, max-width, ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ๊ณผ ๊ฐ์ ์ ์ฝ ์กฐ๊ฑด์ ์กด์คํ๋ฉด์ ์ฝํ
์ธ ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํด์ผ ํฉ๋๋ค. ์ด ๊ณ์ฐ์ ํนํ ์ค์ฒฉ๋ ์์๊ฐ ๋ง์ ๋ณต์กํ ๋ ์ด์์์ ๊ฒฝ์ฐ ๊ณ์ฐ ๋น์ฉ์ด ๋ง์ด ๋ค ์ ์์ต๋๋ค.
CSS ๊ณ ์ ํฌ๊ธฐ ์บ์ ์๊ฐ
CSS ๊ณ ์ ํฌ๊ธฐ ์บ์๋ ์ด๋ฌํ ํฌ๊ธฐ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ๋ธ๋ผ์ฐ์ ์ต์ ํ ๊ธฐ์ ์ ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ํน์ ์กฐ๊ฑด(์: ํน์ ๋ทฐํฌํธ ๋๋น, ํน์ CSS ๊ท์น ์ธํธ) ํ์์ ์์์ ๊ณ ์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์บ์ํฉ๋๋ค. ์ดํ ๋์ผํ ์กฐ๊ฑด์์ ๋์ผํ ์์๋ฅผ ๋ ๋๋งํ๋ ค๊ณ ํ ๋ ์บ์์์ ํฌ๊ธฐ๋ฅผ ๊ฒ์ํ์ฌ ์ฌ๊ณ์ฐํ ํ์๊ฐ ์์ด์ง๋๋ค. ์ด๋ ํนํ ์์ฃผ ์ ๋ฐ์ดํธ๋๋ ์ฝํ ์ธ , ๋์ ๋ ์ด์์ ๋๋ ๋ง์ ์์ ์์๊ฐ ํฌํจ๋ ์๋๋ฆฌ์ค์์ ๋ ๋๋ง ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์บ์ ์๋ ๋ฐฉ์
์บ์๋ ํค-๊ฐ ์์น์ ๋ฐ๋ผ ์๋ํฉ๋๋ค:
- ํค(Key): ํค๋ ๊ณ ์ ํฌ๊ธฐ ๊ณ์ฐ์ ์ํฅ์ ๋ฏธ์น๋ ๋ค์ํ ์์๋ก๋ถํฐ ํ์๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ ์ผ๋ฐ์ ์ผ๋ก ์์์ ์ฝํ ์ธ , ์ ์ฉ๋ CSS ๊ท์น(๊ธ๊ผด ์์ฑ, ํจ๋ฉ, ๋ง์ง, box-sizing ํฌํจ), ๋ถ๋ชจ ์ปจํ ์ด๋์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ ๋ฐ ๋ทฐํฌํธ ํฌ๊ธฐ๊ฐ ํฌํจ๋ฉ๋๋ค. CSS์ ์์ฃผ ๋ฏธ๋ฏธํ ์ฐจ์ด๋ ์๋ก์ด ์บ์ ํญ๋ชฉ์ ๋ง๋ค ์ ์๋ค๋ ์ ์ ์ ์ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- ๊ฐ(Value): ๊ฐ์ ๊ณ์ฐ๋ ์์์ ๊ณ ์ ํฌ๊ธฐ(๋๋น์ ๋์ด)์ ๋๋ค.
๋ธ๋ผ์ฐ์ ๊ฐ ์์์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํด์ผ ํ ๋, ๋จผ์ ์บ์๋ฅผ ํ์ธํฉ๋๋ค. ์ผ์นํ๋ ํค๊ฐ ๋ฐ๊ฒฌ๋๋ฉด ์บ์๋ ํฌ๊ธฐ๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํฌ๊ธฐ๊ฐ ๊ณ์ฐ๋๊ณ ๊ทธ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ ์ฌ์ฉํ ์ ์๋๋ก ์บ์์ ์ ์ฅ๋ฉ๋๋ค.
CSS ๊ณ ์ ํฌ๊ธฐ ์บ์ ์ฌ์ฉ์ ์ด์
CSS ๊ณ ์ ํฌ๊ธฐ ์บ์๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ฃผ์ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ๋ ๋๋ง ์ฑ๋ฅ ํฅ์: ์ค๋ณต๋ ํฌ๊ธฐ ๊ณ์ฐ์ ํผํจ์ผ๋ก์จ ์บ์๋ ๋ ๋๋ง ์ค์ ๋ธ๋ผ์ฐ์ ๊ฐ ์ํํด์ผ ํ๋ ์์ ์ ์์ ์ค์ ๋๋ค. ์ด๋ ๋ ๋น ๋ฅธ ํ์ด์ง ๋ก๋ ์๊ฐ๊ณผ ๋ ๋ถ๋๋ฌ์ด ์ ๋๋ฉ์ด์ ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
- CPU ์ฌ์ฉ๋ ๊ฐ์: ๊ณ ์ ํฌ๊ธฐ ๊ณ์ฐ์ ํนํ ๋ณต์กํ ๋ ์ด์์์ ๊ฒฝ์ฐ CPU ์ง์ฝ์ ์ผ ์ ์์ต๋๋ค. ์บ์๋ CPU ๋ถํ๋ฅผ ์ค์ฌ ๋ชจ๋ฐ์ผ ์ฅ์น์ ๋ฐฐํฐ๋ฆฌ ์๋ช ์ ํฅ์์ํค๊ณ ๋ค๋ฅธ ์์ ์ ์ํ ๋ฆฌ์์ค๋ฅผ ํ๋ณดํ ์ ์์ต๋๋ค.
- ํฅ์๋ ์ฌ์ฉ์ ๊ฒฝํ: ๋ ๋น ๋ฅธ ๋ ๋๋ง์ ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ผ๋ก ์ง์ ์ด์ด์ง๋๋ค. ์ฌ์ฉ์๋ ๋น ๋ฅด๊ฒ ๋ก๋๋๊ณ ๋ถ๋๋ฝ๊ฒ ๋ฐ์ํ๋ ์น์ฌ์ดํธ๋ฅผ ๋ ๋งค๋ ฅ์ ์ด๊ณ ์ ๋ขฐํ ์ ์๋ค๊ณ ์ธ์ํฉ๋๋ค.
- ๋ ๋์ ๋ฐ์์ฑ: ๋ ์ด์์์ด ๋ค๋ฅธ ํ๋ฉด ํฌ๊ธฐ๋ ๋ฐฉํฅ์ ์ ์ํ ๋(๋ฐ์ํ ๋์์ธ), ๋ธ๋ผ์ฐ์ ๋ ์ข ์ข ์์ ํฌ๊ธฐ๋ฅผ ๋ค์ ๊ณ์ฐํด์ผ ํฉ๋๋ค. ์บ์๋ ์ด ํ๋ก์ธ์ค์ ์๋๋ฅผ ๋์ฌ ๋ ์ด์์์ด ๋ฐ์์ ์ด๊ณ ์ ์ฐํ๊ฒ ์ ์ง๋๋๋ก ๋์ธ ์ ์์ต๋๋ค.
CSS ๊ณ ์ ํฌ๊ธฐ ์บ์๋ ์ธ์ ๊ฐ์ฅ ํจ๊ณผ์ ์ธ๊ฐ?
์บ์๋ ๋ค์๊ณผ ๊ฐ์ ์๋๋ฆฌ์ค์์ ๊ฐ์ฅ ํจ๊ณผ์ ์ ๋๋ค:
- ์์๊ฐ ๋์ผํ ์ฝํ ์ธ ์ CSS๋ก ์ฌ๋ฌ ๋ฒ ๋ ๋๋ง๋ ๋: ์ด๋ ์ฝํ ์ธ ๊ฐ ์์ฃผ ์ ๋ฐ์ดํธ๋๊ฑฐ๋ ๋ค์ ๋ ๋๋ง๋๋ ๋์ ๋ ์ด์์์์ ์ผ๋ฐ์ ์ ๋๋ค.
- ์์์ ๊ณ ์ ํฌ๊ธฐ ๊ณ์ฐ์ด ๋ณต์กํ ๋: ์ค์ฒฉ๋ ๊ตฌ์กฐ, ๋ณต์กํ CSS ๊ท์น ๋๋ ์ธ๋ถ ๋ฆฌ์์ค(์: ๊ธ๊ผด)์ ์์กดํ๋ ์์๊ฐ ๊ฐ์ฅ ํฐ ์ด์ ์ ์ป์ต๋๋ค.
- ๋ ์ด์์์ด ๋ฐ์ํ์ด๋ฉฐ ๋ค๋ฅธ ํ๋ฉด ํฌ๊ธฐ์ ์ ์ํ ๋: ์บ์๋ ๋ทฐํฌํธ๊ฐ ๋ณ๊ฒฝ๋ ๋ ์์ ํฌ๊ธฐ ์ฌ๊ณ์ฐ ์๋๋ฅผ ๋์ด๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ์คํฌ๋กค ์ฑ๋ฅ: ์คํฌ๋กค ์ค์ ๋๋ฌ๋๋ ์์์ ํฌ๊ธฐ๋ฅผ ์บ์ํ๋ฉด ์คํฌ๋กค ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ด๋ ๋ณต์กํ ๋ ์ด์์์ ๊ฐ์ง ๊ธด ํ์ด์ง์ ํนํ ์ค์ํฉ๋๋ค.
๊ณ ์ ํฌ๊ธฐ ์บ์๊ฐ ๋ ์ด์์์ ๋ฏธ์น๋ ์ํฅ์ ์์
์์ 1: ๋ฐ์ํ ์ด๋ฏธ์ง ๊ฐค๋ฌ๋ฆฌ
๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ๋ง์ถฐ ์กฐ์ ๋๋ ๊ทธ๋ฆฌ๋์ ์ด๋ฏธ์ง๊ฐ ํ์๋๋ ๋ฐ์ํ ์ด๋ฏธ์ง ๊ฐค๋ฌ๋ฆฌ๋ฅผ ์๊ฐํด๋ณด์ธ์. ์บ์๊ฐ ์๋ค๋ฉด ๋ธ๋ผ์ฐ์ ๋ ๋ทฐํฌํธ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ๊ฐ ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ฅผ ๋ค์ ๊ณ์ฐํด์ผ ํฉ๋๋ค. ์บ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์ด๋ฏธ ๋ ๋๋ง๋ ์ด๋ฏธ์ง์ ์บ์๋ ํฌ๊ธฐ๋ฅผ ๊ฒ์ํ์ฌ ๋ ์ด์์ ํ๋ก์ธ์ค์ ์๋๋ฅผ ํฌ๊ฒ ๋์ผ ์ ์์ต๋๋ค.
์๋๋ฆฌ์ค: ์ฌ์ฉ์๊ฐ ํ๋ธ๋ฆฟ์ ์ธ๋ก ๋ชจ๋์์ ๊ฐ๋ก ๋ชจ๋๋ก ํ์ ํฉ๋๋ค.
์บ์ ์์ ๋: ๋ธ๋ผ์ฐ์ ๋ ๊ฐค๋ฌ๋ฆฌ์ *๋ชจ๋ * ์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ ๋ค์ ๊ณ์ฐํฉ๋๋ค.
์บ์ ์์ ๋: ๋ธ๋ผ์ฐ์ ๋ ๋๋ถ๋ถ์ ์ด๋ฏธ์ง์ ๋ํด ์บ์๋ ํฌ๊ธฐ๋ฅผ ๊ฒ์ํ๊ณ , ์๋ก ๋ณด์ด๊ฒ ๋๊ฑฐ๋ ํ์ ์ผ๋ก ์ธํด ๋ ์ด์์์ด ํฌ๊ฒ ๋ณ๊ฒฝ๋ ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ง ๋ค์ ๊ณ์ฐํฉ๋๋ค.
์์ 2: ๋์ ์ฝํ ์ธ ์ ๋ฐ์ดํธ
์๋ก์ด ์ฝํ ์ธ ๋ก ๊ธฐ์ฌ๋ฅผ ์์ฃผ ์ ๋ฐ์ดํธํ๋ ๋ด์ค ์น์ฌ์ดํธ๋ฅผ ์์ํด๋ณด์ธ์. ์บ์๊ฐ ์๋ค๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์ฝํ ์ธ ๊ฐ ์ ๋ฐ์ดํธ๋ ๋๋ง๋ค ๊ธฐ์ฌ ์ฝํ ์ธ ์ ํฌ๊ธฐ๋ฅผ ๋ค์ ๊ณ์ฐํด์ผ ํฉ๋๋ค. ์บ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ๋ณ๊ฒฝ๋์ง ์์ ์ฝํ ์ธ ๋ถ๋ถ์ ์บ์๋ ํฌ๊ธฐ๋ฅผ ๊ฒ์ํ์ฌ ํ์ํ ์์ ๋์ ์ค์ผ ์ ์์ต๋๋ค.
์๋๋ฆฌ์ค: ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ์ ๋๊ธ์ด ์ถ๊ฐ๋ฉ๋๋ค.
์บ์ ์์ ๋: ๋ธ๋ผ์ฐ์ ๋ ๋๊ธ ์น์ ์ ์ฒด์ ๋ ์ด์์์ ๋ค์ ๊ณ์ฐํ ์ ์์ผ๋ฉฐ, ๋๊ธ ์ถ๊ฐ๋ก ์ฝํ ์ธ ๊ฐ ์๋๋ก ๋ฐ๋ฆฌ๋ฉด ๊ทธ ์์ ์์๋ค๊น์ง๋ ์ ์ฌ์ ์ผ๋ก ๋ค์ ๊ณ์ฐํ ์ ์์ต๋๋ค.
์บ์ ์์ ๋: ๋ธ๋ผ์ฐ์ ๋ ๋ณ๊ฒฝ๋์ง ์์ ๋๊ธ์ ์บ์๋ ํฌ๊ธฐ๋ฅผ ๊ฒ์ํ๊ณ ์๋ก ์ถ๊ฐ๋ ๋๊ธ๊ณผ ๊ทธ ์ฃผ๋ณ์๋ง ๊ณ์ฐ์ ์ง์คํฉ๋๋ค.
์์ 3: ๊ฐ๋ณ ๊ธ๊ผด์ ์ฌ์ฉํ ๋ณต์กํ ํ์ดํฌ๊ทธ๋ํผ
๊ฐ๋ณ ๊ธ๊ผด์ ํ์ดํฌ๊ทธ๋ํผ์ ์๋นํ ์ ์ฐ์ฑ์ ์ ๊ณตํ์ฌ ๊ธ๊ผด ๋๊ป, ๋๋น, ๊ธฐ์ธ๊ธฐ ๋ฑ๊ณผ ๊ฐ์ ๊ธ๊ผด ํน์ฑ์ ์ธ๋ฐํ๊ฒ ์ ์ดํ ์ ์๊ฒ ํด์ค๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ํน์ฑ์ ๋์ ์ผ๋ก ์กฐ์ ํ๋ฉด ํ ์คํธ ๋ ์ด์์์ ์์ฃผ ์ฌ๊ณ์ฐํ๊ฒ ๋ ์ ์์ต๋๋ค. ๊ณ ์ ํฌ๊ธฐ ์บ์๋ ์ด๋ฌํ ์๋๋ฆฌ์ค์์ ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์๋๋ฆฌ์ค: ์ฌ์ฉ์๊ฐ ์ฌ๋ผ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ๋จ๋ฝ์ ๊ธ๊ผด ๋๊ป๋ฅผ ์กฐ์ ํฉ๋๋ค.
์บ์ ์์ ๋: ๋ธ๋ผ์ฐ์ ๋ ์ฌ๋ผ์ด๋ ์กฐ์ ์ด ์์ ๋๋ง๋ค ๋จ๋ฝ์ ๋ ์ด์์์ ๋ค์ ๊ณ์ฐํฉ๋๋ค.
์บ์ ์์ ๋: ๋ธ๋ผ์ฐ์ ๋ ์ด์ ์ฌ๋ผ์ด๋ ์์น์์ ์บ์๋ ํฌ๊ธฐ๋ฅผ ํ์ฉํ์ฌ ๋ ์ด์์์ ํจ์จ์ ์ผ๋ก ์ ๋ฐ์ดํธํ์ฌ ๋ ๋ถ๋๋ฝ๊ณ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค.
CSS ๊ณ ์ ํฌ๊ธฐ ์บ์ ํ์ฉ ๋ฐฉ๋ฒ
CSS ๊ณ ์ ํฌ๊ธฐ ์บ์๋ ๋๋ถ๋ถ ์๋์ผ๋ก ์๋ํ์ง๋ง, ๊ทธ ํจ๊ณผ๋ฅผ ๊ทน๋ํํ๊ธฐ ์ํด ํ ์ ์๋ ๋ช ๊ฐ์ง ์์ ์ด ์์ต๋๋ค:
- ๋ถํ์ํ CSS ๋ณ๊ฒฝ ํผํ๊ธฐ: CSS ๊ท์น์ ๋ถํ์ํ๊ฒ ์์ ํ๋ฉด ์บ์๊ฐ ๋ฌดํจํ๋ ์ ์์ต๋๋ค. ํนํ ์์์ ๋ ์ด์์์ ์ํฅ์ ๋ฏธ์น๋ CSS ๋ณ๊ฒฝ ํ์๋ฅผ ์ต์ํํ์ญ์์ค. ์ด๊ฒ์ ์๊ฐ๋ณด๋ค ๋ ์ค์ํฉ๋๋ค. ํ ๋๋ฆฌ, ๊ทธ๋ฆผ์ ๋๋ ์์์ ๋ํ ์ฌ์ํ ์กฐ์ ๋ ์บ์ ๋ฌดํจํ๋ฅผ ์ ๋ฐํ๊ณ ์ฌ๊ณ์ฐ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
- ์ผ๊ด๋ CSS ์คํ์ผ ์ฌ์ฉ: ์ ์ฌํ ์์์ ๊ฑธ์ณ ์ผ๊ด๋ ์คํ์ผ์ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ์บ์๋ ํฌ๊ธฐ ๊ณ์ฐ์ ๋ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ์ฌํ ์คํ์ผ์ ์ฌ๋ฌ ๋ฒํผ์ด ์๋ ๊ฒฝ์ฐ ์ผ๊ด๋๊ฒ ์คํ์ผ์ด ์ง์ ๋์๋์ง ํ์ธํ์ญ์์ค.
- ๊ธ๊ผด ๋ก๋ฉ ์ต์ ํ: ๊ธ๊ผด ๋ก๋ฉ์ ๋ ์ด์์ ์ฑ๋ฅ์ ์๋นํ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ๊ธ๊ผด์ด ํจ์จ์ ์ผ๋ก ๋ก๋๋๋์ง ํ์ธํ๊ณ ํ์ผ ํฌ๊ธฐ๊ฐ ํฌ๊ฑฐ๋ ๋ณต์กํ ๋ ๋๋ง ์๊ตฌ ์ฌํญ์ด ์๋ ์น ๊ธ๊ผด ์ฌ์ฉ์ ํผํ์ญ์์ค. Font Face Observer๊ฐ ์ด์ ๋์์ด ๋ ์ ์์ต๋๋ค. ๊ณ ๋ คํด๋ณผ ๋งํ ๊ธฐ์ ์ ์ฝํ ์ธ ์์ ์ฌ์ฉํ๋ ๋ฌธ์๋ง ๋ก๋ํ๋ ๊ธ๊ผด ์๋ธ์ธํ (font subsetting)์ ๋๋ค.
- ๋ ์ด์์ ์ค๋์ฑ(Layout Thrashing) ํผํ๊ธฐ: ๋ ์ด์์ ์ค๋์ฑ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋น ๋ฅธ ์ฐ์์ผ๋ก ๋ ์ด์์์ ๋ฐ๋ณต์ ์ผ๋ก ๋ค์ ๊ณ์ฐํ ๋ ๋ฐ์ํฉ๋๋ค. ์ด๋ ๋ฃจํ ์์์ ๋ ์ด์์ ์์ฑ(์:
offsetWidth,offsetHeight)์ ์ฝ๊ณ ์ฐ๋ ์คํฌ๋ฆฝํธ์ ์ํด ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ ์ด์์ ๋ณ๊ฒฝ ์ฌํญ์ ์ผ๊ด ์ฒ๋ฆฌํ๊ณ ๋ถํ์ํ ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ๋ฅผ ํผํ์ฌ ๋ ์ด์์ ์ค๋์ฑ์ ์ต์ํํ์ญ์์ค. contain์์ฑ ์ ๋ต์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ:containCSS ์์ฑ์ ๋ ์ด์์, ์คํ์ผ ๋ฐ ํ์ธํธ๋ฅผ ์ํด ๋ฌธ์ ํธ๋ฆฌ์ ์ผ๋ถ๋ฅผ ๊ฒฉ๋ฆฌํ๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค.contain: layout๋๋contain: content๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ๊ฒฝ์ด ๋ฐ์ํ ๋ ์ฌ๊ณ์ฐ ๋ฒ์๋ฅผ ์ ํํ์ฌ ๋ธ๋ผ์ฐ์ ๊ฐ ๊ณ ์ ํฌ๊ธฐ ์บ์๋ฅผ ๋ณด๋ค ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ฉด ์บ์์ ํจ์จ์ฑ์ ์ ํดํ ์ ์์ผ๋ฏ๋ก ์ ์คํ๊ฒ ์ฌ์ฉํ์ญ์์ค.- ๋์ ์ฝํ ์ธ ์ฝ์ ์ ์ ์ํ๊ธฐ: ์บ์๊ฐ ์ฌ๋ ๋๋ง์ ๋์์ด ๋์ง๋ง, DOM์ ์ ์์๋ฅผ ๊ณ์ ์ฝ์ ํ๋ฉด ํด๋น ์์์ ์คํ์ผ์ด๋ ๊ตฌ์กฐ๊ฐ ๊ณ ์ ํ ๊ฒฝ์ฐ ์บ์ ๋ฏธ์ค(cache miss)๋ก ์ด์ด์ง ์ ์์ต๋๋ค. DOM ์ ๋ฐ์ดํธ ๋น๋๋ฅผ ์ต์ํํ๋๋ก ์ฝํ ์ธ ๋ก๋ฉ ์ ๋ต์ ์ต์ ํํ์ญ์์ค. ํฐ ๋ชฉ๋ก์ด๋ ๊ทธ๋ฆฌ๋์๋ ๊ฐ์ํ(virtualization)์ ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
์บ์ ์ฑ๋ฅ ๋๋ฒ๊น
์ํ๊น๊ฒ๋ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ํตํด CSS ๊ณ ์ ํฌ๊ธฐ ์บ์๊ฐ ์๋ํ๋ ๊ฒ์ ์ง์ ๊ด์ฐฐํ๋ ๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ๋ถ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๋๋ง ์ฑ๋ฅ์ ๋ถ์ํจ์ผ๋ก์จ ๊ทธ ์ํฅ์ ์ ์ถํ ์ ์์ต๋๋ค:
- Chrome DevTools ์ฑ๋ฅ ํญ: ์ด ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์น์ฌ์ดํธ์ ๋ ๋๋ง ์ฑ๋ฅ์ ๊ธฐ๋กํ๊ณ ๋ถ์ํ ์ ์์ต๋๋ค. ๋ ์ด์์ ๊ณ์ฐ์ ์๋นํ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์์ญ์ ์ฐพ์ ๋ถํ์ํ CSS ๋ณ๊ฒฝ์ด๋ ๋ ์ด์์ ์ค๋์ฑ๊ณผ ๊ฐ์ ์ ์ฌ์ ์์ธ์ ์กฐ์ฌํ์ญ์์ค.
- WebPageTest: ์ด ์จ๋ผ์ธ ๋๊ตฌ๋ ๋ ๋๋ง ์๊ฐ ๋ฐ CPU ์ฌ์ฉ๋์ ํฌํจํ์ฌ ์น์ฌ์ดํธ์ ๋ํ ์์ธํ ์ฑ๋ฅ ๋ฉํธ๋ฆญ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์๋ ์์ญ์ ์๋ณํ์ญ์์ค.
- ๋ธ๋ผ์ฐ์ ๋ ๋๋ง ํต๊ณ: ์ผ๋ถ ๋ธ๋ผ์ฐ์ ๋ ๋ ์์ธํ ๋ ๋๋ง ํต๊ณ๋ฅผ ๋ ธ์ถํ๋ ์คํ์ ํ๋๊ทธ๋ ์ค์ ์ ์ ๊ณตํฉ๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ์ต์ ์ ๋ํด์๋ ๋ธ๋ผ์ฐ์ ์ค๋ช ์๋ฅผ ํ์ธํ์ญ์์ค. ์๋ฅผ ๋ค์ด, Chrome์์๋ DevTools์ ๋ ๋๋ง ํญ์์ "๋ ์ด์์ ๋ณ๊ฒฝ ์์ญ ํ์(Show Layout Shift Regions)"๋ฅผ ํ์ฑํํ์ฌ ์บ์ ๋ฏธ์ค๋ ๋นํจ์จ์ ์ธ ๋ ์ด์์ ๊ณ์ฐ์ ๋ํ๋ผ ์ ์๋ ๋ ์ด์์ ๋ณ๊ฒฝ์ ์๊ฐํํ ์ ์์ต๋๋ค.
Chrome DevTools ์ฑ๋ฅ ํญ์ "์คํ์ผ ์ฌ๊ณ์ฐ(Recalculate Style)" ๋ฐ "๋ ์ด์์(Layout)" ์ด๋ฒคํธ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด์ญ์์ค. ๋น๋ฒํ๊ฑฐ๋ ์ค๋ ์คํ๋๋ "๋ ์ด์์" ์ด๋ฒคํธ๋ ๊ณ ์ ํฌ๊ธฐ ์บ์๊ฐ ํจ๊ณผ์ ์ผ๋ก ํ์ฉ๋์ง ์๊ณ ์์์ ๋ํ๋ผ ์ ์์ต๋๋ค. ์ด๋ ์์ฃผ ๋ณ๊ฒฝ๋๋ ์ฝํ ์ธ , CSS ์คํ์ผ ๋๋ ๋ ์ด์์ ์ค๋์ฑ ๋๋ฌธ์ผ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ธ ํจ์ ๊ณผ ๊ณ ๋ ค์ฌํญ
- ์บ์ ๋ฌดํจํ: ์์ ์ธ๊ธํ๋ฏ์ด, ๊ณ ์ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ ์กฐ๊ฑด์ด ๋ณ๊ฒฝ๋๋ฉด ์บ์๊ฐ ๋ฌดํจํ๋ฉ๋๋ค. ์ฌ๊ธฐ์๋ ์์์ ์ฝํ ์ธ , CSS ๊ท์น ๋๋ ๋ถ๋ชจ ์ปจํ ์ด๋์์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณต๊ฐ์ ๋ณ๊ฒฝ์ด ํฌํจ๋ฉ๋๋ค. CSS ๋ฐ JavaScript ์ฝ๋๋ฅผ ์ต์ ํํ ๋ ์ด๋ฌํ ์์๋ฅผ ์ผ๋์ ๋์ญ์์ค.
- ๋ธ๋ผ์ฐ์ ํธํ์ฑ: CSS ๊ณ ์ ํฌ๊ธฐ ์บ์๋ ๋๋ถ๋ถ์ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ์ง์๋์ง๋ง ํน์ ๊ตฌํ ์ธ๋ถ ์ ๋ณด๋ ๋ค๋ฅผ ์ ์์ต๋๋ค. ์ผ๊ด๋ ์ฑ๋ฅ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ์์ ์น์ฌ์ดํธ๋ฅผ ํ ์คํธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ฆด๋ฆฌ์ค ๋ ธํธ๋ฅผ ํ์ธํ์ญ์์ค.
- ๊ณผ์ ์ต์ ํ: ์บ์ ์ต์ ํ๋ ์ค์ํ์ง๋ง ๊ณผ์ ์ต์ ํ๋ฅผ ํผํ๋ ๊ฒ๋ ์ค์ํฉ๋๋ค. ์ฌ์ํ ์ฑ๋ฅ ํฅ์์ ์ํด ์ฝ๋ ๊ฐ๋ ์ฑ์ด๋ ์ ์ง ๊ด๋ฆฌ์ฑ์ ํฌ์ํ์ง ๋ง์ญ์์ค. ํญ์ ๊นจ๋ํ๊ณ ์ ๊ตฌ์กฐํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ์ฐ์ ์ํ์ญ์์ค.
- JavaScript๋ฅผ ํตํ ๋์ CSS ๋ณ๊ฒฝ: JavaScript๋ฅผ ํตํด CSS ์์ฑ์ ๋์ ์ผ๋ก ์์ ํ๋ฉด ์ ์ฐ์ฑ์ด ์ ๊ณต๋์ง๋ง, ๊ณผ๋ํ ๋ณ๊ฒฝ์ด๋ ์ ๋๋ก ์ต์ ํ๋์ง ์์ ์ฝ๋๋ ๋ ์ด์์ ์ค๋์ฑ์ ์ฆ๊ฐ์ํค๊ณ ์บ์์ ํจ์จ์ฑ์ ๊ฐ์์ํฌ ์ ์์ต๋๋ค. JavaScript๋ฅผ ์ฌ์ฉํ์ฌ CSS๋ฅผ ์กฐ์ํ๋ ๊ฒฝ์ฐ ์ ๋ฐ์ดํธ๋ฅผ ์กฐ์ (throttling)ํ๊ฑฐ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ผ๊ด ์ฒ๋ฆฌํ์ฌ ๋ ์ด์์ ์ฌ๊ณ์ฐ์ ์ต์ํํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.
- CSS-in-JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ: CSS-in-JS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ CSS ๊ท์น ๊ด๋ฆฌ์ ๊ณ ์ ํฌ๊ธฐ ์บ์์ ๋ฏธ์น๋ ์ํฅ์ ๋ณต์ก์ฑ์ ๋ํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์คํ์ผ๋ง ์ ๋ฐ์ดํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ์ธ์งํ๊ณ ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ๊ณ ๋ คํ์ญ์์ค.
- ์ค์ ์ฅ์น์์์ ํ ์คํธ: ์๋ฎฌ๋ ์ดํฐ๋ ์ ์ฉํ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๊ณตํ์ง๋ง, ๋ค์ํ ์ฒ๋ฆฌ ๋ฅ๋ ฅ๊ณผ ๋คํธ์ํฌ ์กฐ๊ฑด์ ๊ฐ์ง ์ค์ ์ฅ์น์์ ์น์ฌ์ดํธ๋ฅผ ํ ์คํธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ค์ ์๋๋ฆฌ์ค์์ ๊ณ ์ ํฌ๊ธฐ ์บ์๊ฐ ์ด๋ป๊ฒ ์ํ๋๋์ง์ ๋ํ ๋ ์ ํํ ์ดํด๋ฅผ ์ป์ ์ ์์ต๋๋ค.
๋ ์ด์์ ์ต์ ํ์ ๋ฏธ๋
CSS ๊ณ ์ ํฌ๊ธฐ ์บ์๋ ๋ ์ด์์ ์ฑ๋ฅ ์ต์ ํ๋ผ๋ ํผ์ฆ์ ํ ์กฐ๊ฐ์ผ ๋ฟ์ ๋๋ค. ์น ๊ธฐ์ ์ด ๋ฐ์ ํจ์ ๋ฐ๋ผ ์๋ก์ด ๊ธฐ์ ๊ณผ API๊ฐ ๊ณ์ํด์ ๋ฑ์ฅํ๊ณ ์์ต๋๋ค. ํฅํ ๊ฐ๋ฐ์ ์ํ ๋ช ๊ฐ์ง ์ ๋งํ ๋ถ์ผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ๋ ๋ฐ์ ๋ ์บ์ฑ ์ ๋ต: ๋ธ๋ผ์ฐ์ ๋ ๋ ๋์ ๋ฒ์์ ์๋๋ฆฌ์ค์ CSS ํจํด์ ์ฒ๋ฆฌํ ์ ์๋ ๋ ์ ๊ตํ ์บ์ฑ ์ ๋ต์ ๊ตฌํํ ์ ์์ต๋๋ค.
- ๊ฐ์ ๋ ๋ ์ด์์ ์๊ณ ๋ฆฌ์ฆ: ๋ ํจ์จ์ ์ธ ๋ ์ด์์ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ์ฐ๊ตฌ๋ ์บ์ฑ์ ์์กดํ์ง ์๊ณ ๋ ์๋นํ ์ฑ๋ฅ ํฅ์์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
- WebAssembly: WebAssembly๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ ๋ธ๋ผ์ฐ์ ์์ ์คํํ ์ ์๋ ๊ณ ์ฑ๋ฅ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ด๋ ์ฌ์ฉ์ ์ ์ ๋ ์ด์์ ์์ง์ ๊ตฌํํ๊ฑฐ๋ ๊ณ์ฐ ์ง์ฝ์ ์ธ ํฌ๊ธฐ ๊ณ์ฐ์ ์ต์ ํํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
- ์ถ์ธก ํ์ฑ ๋ฐ ๋ ๋๋ง: ๋ธ๋ผ์ฐ์ ๋ ๊ณง ๋ณด์ผ ๊ฐ๋ฅ์ฑ์ด ์๋ ํ์ด์ง ๋ถ๋ถ์ ์ฌ์ ์ ํ์ฑํ๊ณ ๋ ๋๋งํ์ฌ ์ฒด๊ฐ ๋ก๋ฉ ์๊ฐ์ ๋์ฑ ์ค์ผ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
CSS ๊ณ ์ ํฌ๊ธฐ ์บ์๋ ์ต์ ์น ๋ธ๋ผ์ฐ์ ์์ ๋ ์ด์์ ์ฑ๋ฅ์ ์ต์ ํํ๊ธฐ ์ํ ๊ท์คํ ๋๊ตฌ์ ๋๋ค. ์๋ ๋ฐฉ์๊ณผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ดํดํจ์ผ๋ก์จ ๋ ๋น ๋ฅด๊ณ ๋ถ๋๋ฌ์ฐ๋ฉฐ ๋ฐ์์ฑ์ด ๋ฐ์ด๋ ์น์ฌ์ดํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์บ์๋ ๋๋ถ๋ถ ์๋์ด์ง๋ง, CSS ๋ณ๊ฒฝ, ๋ ์ด์์ ์ค๋์ฑ ๋ฐ ๊ธ๊ผด ๋ก๋ฉ์ ์ ์ํ๋ฉด ๊ทธ ํจ๊ณผ๋ฅผ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์น ๊ธฐ์ ์ด ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ ์๋ก์ด ์ต์ ํ ๊ธฐ์ ๊ณผ API์ ๋ํ ์ ๋ณด๋ฅผ ์ง์์ ์ผ๋ก ํ์ ํ๋ ๊ฒ์ด ๋ฐ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๋ฐ ์ค์ํ ๊ฒ์ ๋๋ค.
์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ฐ์ ์ํ๊ณ CSS ๊ณ ์ ํฌ๊ธฐ ์บ์์ ๊ฐ์ ๊ธฐ์ ์ ์ฑํํจ์ผ๋ก์จ ์ ์ธ๊ณ ๊ฐ๋ฐ์๋ค์ ๋ชจ๋๋ฅผ ์ํ ๋ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์น์ ๊ธฐ์ฌํ ์ ์์ต๋๋ค.