CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ฅผ ์ฌ์ธต ๋ถ์ํฉ๋๋ค. ์ค์ฉ์ ์ธ ๊ธ๋ก๋ฒ ์์ ๋ฅผ ํตํด ์น ๊ฐ๋ฐ์์ ๋ฆฌ์์ค ์ฌ์ฉ์ ์ต์ ํํ๊ณ , ์ฑ๋ฅ์ ๊ฐ์ ํ๋ฉฐ, ๋ณต์กํ ์คํ์ผ๋ง์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ์ธ์.
CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์์ง: ๋ ์ด์ด ๋ฆฌ์์ค ์ต์ ํ
๋์์์ด ์งํํ๋ ์น ๊ฐ๋ฐ ํ๊ฒฝ์์ ํจ์จ์ ์ธ ๋ฆฌ์์ค ๊ด๋ฆฌ๋ ๋ฌด์๋ณด๋ค ์ค์ํฉ๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ณต์กํด์ง์๋ก ์บ์ค์ผ์ด๋ฉ ์คํ์ผ ์ํธ(CSS)๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ฐ๋ ฅํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ์๋ฃจ์ ์ ํ์์ฑ์ด ๋์ฑ ์ค์ํด์ง๊ณ ์์ต๋๋ค. CSS ์ฌ์์ ๋น๊ต์ ์ต๊ทผ์ ์ถ๊ฐ๋ CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ ์บ์ค์ผ์ด๋๋ฅผ ๊ตฌ์ฑํ๊ณ ์ ์ดํ๋ ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ์ฌ ๋ฆฌ์์ค ์ต์ ํ ๋ฐ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ ์๋นํ ์ด์ ์ ์ ๊ณตํฉ๋๋ค. ์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋์์๋ CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด์ ๊ธฐ๋ฅ, ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๊ธฐ์ฌํ๋ ๋ฐฉ์, ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ์ฌ ๊ธ๋ก๋ฒ ๋๋ฌ ๋ฒ์๋ฅผ ๊ฐ์ถ ๊ณ ์ฑ๋ฅ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ํ๊ตฌํฉ๋๋ค.
CSS ์บ์ค์ผ์ด๋์ ๊ทธ ๊ณผ์ ์ดํดํ๊ธฐ
์บ์ค์ผ์ด๋ ๋ ์ด์ด์ ๋ํด ์์๋ณด๊ธฐ ์ ์ CSS ์บ์ค์ผ์ด๋ ์์ฒด๋ฅผ ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์บ์ค์ผ์ด๋๋ ์คํ์ผ์ด HTML ์์์ ์ ์ฉ๋๋ ๋ฐฉ์์ ๊ฒฐ์ ํฉ๋๋ค. ์ด๋ ๋ช ์๋, ์์ค ์์, ์ค์๋ ๋ฑ ์ผ๋ จ์ ๊ท์น์ ๋ฐ๋ผ ์๋ํฉ๋๋ค. ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ์บ์ค์ผ์ด๋๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๊ฐ๋ฐ์๋ค์ ์ข ์ข ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉดํฉ๋๋ค:
- ๋ช ์๋ ์ถฉ๋: ์๋ก ๋ค๋ฅธ ์์ค์ ๋ช ์๋๋ก ์ธํ ์คํ์ผ ๊ท์น ์ถฉ๋์ ์์์น ๋ชปํ ์๊ฐ์ ๊ฒฐ๊ณผ์ ๋๋ฒ๊น ์ ์ด๋ ค์์ ์ด๋ํ ์ ์์ต๋๋ค.
- ์คํ์ผ์ํธ ๋น๋ํ: ํฌ๊ณ ๋ณต์กํ ์คํ์ผ์ํธ๋ ์น ํ์ด์ง์ ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ์ฆ๊ฐ์์ผ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
- ์ ์ง๋ณด์์ ์ด๋ ค์: ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ์คํ์ผ์ ์์ ํ๋ ๊ฒ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ด๋ฐ, ํ ์์ญ์ ๋ณ๊ฒฝ์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ ๋ถ๋ถ์ ์๋์น ์๊ฒ ์ํฅ์ ๋ฏธ์น ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๋ฌํ ๊ณผ์ ๋ ์ข ์ข ์ฑ๋ฅ ๋ณ๋ชฉ ํ์๊ณผ ๊ฐ๋ฐ ์๊ฐ ์ฆ๊ฐ๋ก ์ด์ด์ง๋๋ค. BEM, SMACSS์ ๊ฐ์ ๋ช ๋ช ๊ท์น์ ์ฌ์ฉํ๊ณ ์คํ์ผ์ ์ ์คํ๊ฒ ๊ตฌ์ฑํ๋ ๊ฒ๊ณผ ๊ฐ์ ์ ํต์ ์ธ ์ ๊ทผ ๋ฐฉ์์ด ๋์์ด ๋์ง๋ง, ์ข ์ข ์บ์ค์ผ์ด๋์ ๋ณธ์ง์ ์ธ ๋ณต์ก์ฑ์ด๋ผ๋ ํต์ฌ ๋ฌธ์ ๋ฅผ ์์ ํ ํด๊ฒฐํ์ง๋ ๋ชปํฉ๋๋ค.
CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด ์๊ฐ: ์คํ์ผ๋ง์ ๋ํ ๊ณ์ธต์ ์ ๊ทผ
CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ ์คํ์ผ์ํธ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ๋ ๊ตฌ์กฐํ๋๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๊ฐ๊ฐ ์คํ์ผ ๊ทธ๋ฃน์ ํฌํจํ๋ ๋ ์ด์ด ์ธํธ๋ฅผ ์ ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์บ์ค์ผ์ด๋๋ ๋ ์ด์ด ์์์ ๋ฐ๋ผ ์คํ์ผ์ ์ ์ฉํ๋ฉฐ, ๋์ค ๋ ์ด์ด์ ์คํ์ผ์ด ์ด์ ๋ ์ด์ด์ ์คํ์ผ์ ์ฌ์ ์ํฉ๋๋ค(๋์ค ๊ท์น์ด ๋ ๊ตฌ์ฒด์ ์ด์ง ์์ ๊ฒฝ์ฐ). ์ด๋ ๋ช ํํ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ง๋ค๊ณ ์ถฉ๋ ํด๊ฒฐ์ ๋จ์ํํฉ๋๋ค.
ํต์ฌ ๊ฐ๋ ์ CSS๋ฅผ ๋ช ๋ช ๋ ๋ ์ด์ด๋ก ๋๋์ด ์์ธก ๊ฐ๋ฅํ๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๊ฒ์ ๋๋ค. ๊ธ๋ก๋ฒ ๊ณ ๊ฐ์ ๋ชฉํ๋ก ํ๋ ์ ์์๊ฑฐ๋ ํ๋ซํผ์ ์๊ฐํด ๋ด ์๋ค. ๋ค์๊ณผ ๊ฐ์ด ๋ ์ด์ด๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค:
- ๊ธฐ๋ณธ ๋ ์ด์ด(Base Layer): ํต์ฌ ์คํ์ผ, ๋ฆฌ์ ์คํ์ผ, ๊ธฐ๋ณธ ํ์ดํฌ๊ทธ๋ํผ๋ฅผ ํฌํจํฉ๋๋ค. ์ด ๋ ์ด์ด๋ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฅ ๋จผ์ ์ ์๋์ด ๊ฒฌ๊ณ ํ ๊ธฐ๋ฐ์ ๋ณด์ฅํฉ๋๋ค.
- ํ ๋ง ๋ ์ด์ด(Theme Layer): ํน์ ํ ๋ง์ ๊ด๋ จ๋ ์คํ์ผ์ ๋ณด์ ํฉ๋๋ค. ์ ์์๊ฑฐ๋ ํ๋ซํผ์ ๋ผ์ดํธ ๋ชจ๋์ ๋คํฌ ๋ชจ๋๋ฅผ ์ ๊ณตํ ์ ์์ผ๋ฉฐ, ๊ฐ๊ฐ ๊ณ ์ ํ ํ ๋ง ๋ ์ด์ด์ ์์นํฉ๋๋ค.
- ์ปดํฌ๋ํธ ๋ ์ด์ด(Component Layer): ๊ฐ๋ณ ์ปดํฌ๋ํธ(๋ฒํผ, ํผ, ๋ด๋น๊ฒ์ด์ )์ ์คํ์ผ์ ๋ณด๊ดํฉ๋๋ค. ์ด๋ฌํ ์ปดํฌ๋ํธ๋ ๋ ํฐ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ผ๋ถ์ด๊ฑฐ๋ ๋ง์ถค ์ ์๋ ์ ์์ต๋๋ค.
- ๋ฒค๋ ๋ ์ด์ด(Vendor Layer) (์ ํ ์ฌํญ): ๋ ์ง ์ ํ๊ธฐ๋ ํน์ ์ฐจํธ ์ปดํฌ๋ํธ์ ๊ฐ์ ์๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์คํ์ผ์ ๋๋ค. ๋ฒค๋ ๋ ์ด์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ผ๊ณผ์ ์ถฉ๋์ ๋ฐฉ์งํฉ๋๋ค.
- ์ ํธ๋ฆฌํฐ ๋ ์ด์ด(Utility Layer): ํน์ ๊ธฐ๋ฅ ๋ฐ ์คํ์ผ๋ง์ ์ฌ์ฉ๋๋ ์คํ์ผ์ ํฌํจํฉ๋๋ค.
- ์ฌ์ ์ ๋ ์ด์ด(Overrides Layer): ๋ชจ๋ ์ฌ์ ์๋ฅผ ํฌํจํฉ๋๋ค.
- ์ ์ญ ์ฌ์ ์ ๋ ์ด์ด(Global Overrides Layer): ๋ค์ํ ์ฌ์ ์๋ฅผ ์ํ ์ ์ญ ์คํ์ผ์ ํฌํจํฉ๋๋ค.
- ์ฌ์ฉ์ ์ ์ ๋ ์ด์ด(User-Defined Layer) (์ ํ ์ฌํญ): ์ฌ์ฉ์๊ฐ ์ ์ฉํ ์คํ์ผ(ํ ๋ง๋ฅผ ์ฌ์ฉ์ ์ง์ ํ ์ ์๋ ๊ฒฝ์ฐ)์ ํฌํจํฉ๋๋ค.
๋ํ, ๋ ์ด์ด๋ ๊ธ๋ก๋ฒ ์น์ฌ์ดํธ์ ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ธ ๋ก์ผ์ผ๋ณ ์คํ์ผ๋ง์ ํด๊ฒฐํฉ๋๋ค.
์๋ฅผ ๋ค์ด, ์ ์์๊ฑฐ๋ ํ๋ซํผ์ ์ธ์ด ์ ํ ๋๋กญ๋ค์ด์ ๋ํ ํน์ ์คํ์ผ์ ๊ฐ์ง ์ ์๊ฑฐ๋, ์ธ์ด์ ๋ฐ๋ผ ์ซ์ ํ์์ด ๋ค๋ฅผ ์ ์์ต๋๋ค(์: ์ผ๋ถ ๋ฌธํ๊ถ์์๋ ์์์ ์ผ๋ก ์ผํ๋ฅผ ์ฌ์ฉํ๊ณ ๋ค๋ฅธ ๋ฌธํ๊ถ์์๋ ๋ง์นจํ๋ฅผ ์ฌ์ฉ). ์ด๋ฌํ ๊ฐ ๋ ์ด์ด๋ ๊ณ ์ ํ ์ด๋ฆ์ผ๋ก ์ ์๋๊ฑฐ๋ ํ์ฌ ์ธ์ด์ ๋ฐ๋ผ ๋์ ์ธ ๋ฐฉ์์ผ๋ก ์ ์๋์ด ์คํ์ผ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋ ๋๋ง๋๋๋ก ํ ์ ์์ต๋๋ค.
CSS์์ ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ฅผ ์ ์ํ๋ ค๋ฉด @layer
at-rule์ ์ฌ์ฉํด์ผ ํฉ๋๋ค:
@layer reset, base, theme, component, overrides, utility;
์ด๋ reset
, base
, theme
, component
, overrides
, utility
์ ์ฌ์ฏ ๊ฐ ๋ ์ด์ด๋ฅผ ์์ฑํฉ๋๋ค. ๋ ์ด์ด๊ฐ ์ ์ธ๋๋ ์์๊ฐ ์ค์ํ๋ฉฐ, ๋์ค ๋ ์ด์ด์ ์คํ์ผ์ด ์ด์ ๋ ์ด์ด์ ์คํ์ผ์ ์ฌ์ ์ํฉ๋๋ค.
ํน์ ๋ ์ด์ด์ ์คํ์ผ์ ํ ๋นํ๋ ค๋ฉด CSS ๊ท์น์ @layer
๋ธ๋ก์ผ๋ก ๊ฐ์ธ๋ฉด ๋ฉ๋๋ค:
@layer base {
body {
font-family: sans-serif;
margin: 0;
}
}
@layer theme {
.button {
background-color: #007bff;
color: white;
}
}
CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ด์
์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ ์ฃผ๋ก ๋ช ๊ฐ์ง ์ฃผ์ ์ด์ ์ ํตํด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ฐ์ ์ ํฌ๊ฒ ๊ธฐ์ฌํฉ๋๋ค:
- ๋ช ์๋ ๋ฌธ์ ๊ฐ์: ์คํ์ผ์ ๋ ์ด์ด๋ก ๊ตฌ์ฑํจ์ผ๋ก์จ ์คํ์ผ์ ์ฌ์ ์ํ๊ธฐ ์ํด ์ง๋์น๊ฒ ๊ตฌ์ฒด์ ์ธ ์ ํ์๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์ค์ด๋ค์ด, ์บ์ค์ผ์ด๋์ ๋ณต์ก์ฑ์ ์ต์ํํ๊ณ ์ ํ์ ๋น๋ํ ๊ฐ๋ฅ์ฑ์ ์ค์ ๋๋ค. ๋ ๋ณต์กํ ์ ํ์๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ค ์์์ ์ด๋ค ์คํ์ผ์ ์ ์ฉํ ์ง ๊ฒฐ์ ํ ๋ ๊ณ์ฐ ๋ถํ๊ฐ ์ ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
- ํจ์จ์ ์ธ ์คํ์ผ์ํธ ๋ก๋ฉ: ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ ์คํ์ผ์ํธ ๋ก๋ฉ์ ์ต์ ํํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ๋ ์ด๊ธฐ ๋ ๋๋ง์ ๊ฐ์ฅ ์ค์ํ ๋ ์ด์ด์ ๋ก๋ฉ์ ๋ถ์ํ๊ณ ์ ์ฌ์ ์ผ๋ก ์ฐ์ ์์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ์ด๋ ์ฒซ ํ์ธํธ๊น์ง์ ์๊ฐ(TTFP)์ ํฌ๊ฒ ์ค์ด๊ณ ์ฒด๊ฐ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ ํฅ์: CSS๋ฅผ ๋ ์ด์ด๋ก ๊ตฌ์ฑํ๋ฉด ์ฝ๋ ์ฌ์ฌ์ฉ์ฑ์ด ํฅ์๋์ด ์ฝ๋ ์ค๋ณต๊ณผ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ค์ด๋ก๋ํ๊ณ ์ฒ๋ฆฌํด์ผ ํ๋ CSS์ ์์ด ์ค์ด๋ญ๋๋ค. ์ด๋ ํฌ๊ณ ๋ณต์กํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํนํ ์ค์ํฉ๋๋ค.
- ํฅ์๋ ์ฝ๋ ๋ถํ (๋น๋ ๋๊ตฌ ์ฌ์ฉ ์): ๋น๋ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก CSS ํ์ผ์ ๋ถํ ํ๋๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํน์ ํ์ด์ง๋ ์น์ ์ ํ์ํ CSS๋ง ๋ก๋๋์ด ์ด๊ธฐ ๋ก๋ ์๊ฐ๊ณผ ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ ์๋น๋ฅผ ๋์ฑ ์ค์ธ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๋ ์ด์ด ๋ฆฌ์์ค ์ต์ ํ ๊ธฐ๋ฒ
CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ด์ ์ ์ต๋ํ ํ์ฉํ๋ ค๋ฉด ๋ค์ ์ต์ ํ ๊ธฐ๋ฒ์ ๊ณ ๋ คํ์ญ์์ค:
- ์ ๋ต์ ์ธ ๋ ์ด์ด ์์ ์ง์ : ๋ ์ด์ด์ ์์๋ฅผ ์ ์คํ๊ฒ ๊ณํํ์ญ์์ค. ๊ธฐ๋ณธ ์คํ์ผ๊ณผ ๋ฆฌ์ ์ ์ฒ์์ ๋ฐฐ์นํ๊ณ , ๊ทธ ๋ค์์ ํ ๋ง ์คํ์ผ, ์ปดํฌ๋ํธ ์คํ์ผ, ๋ง์ง๋ง์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ๋ณ ์ฌ์ ์๋ฅผ ๋ฐฐ์นํฉ๋๋ค. ์ด๋ฌํ ๋ ผ๋ฆฌ์ ์์๋ ์คํ์ผ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์บ์ค์ผ์ด๋๋๋๋ก ๋ณด์ฅํ๊ณ ์ฝ๋๋ฅผ ๋ ์ฝ๊ฒ ์ ์ง ๊ด๋ฆฌํ ์ ์๋๋ก ํฉ๋๋ค.
- ๋ ์ด์ด ๋ด ์ ํ์ ๋ช ์๋ ์ต์ํ: ์บ์ค์ผ์ด๋ ๋ ์ด์ด๊ฐ ๋ช ์๋ ์ถฉ๋์ ์ค์ด๋ ๋ฐ ๋์์ด ๋์ง๋ง, ๊ฐ ๋ ์ด์ด ๋ด์์ ์ ํ์๋ฅผ ๊ฐ๋ฅํ ํ ๋จ์ํ๊ฒ ์ ์งํ๋๋ก ๋ ธ๋ ฅํด์ผ ํฉ๋๋ค. ์ด๋ ๋ ๋๋ง ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ๋จ์ผ ๋ ์ด์ด ๋ด์์์ ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ ์ค์ ๋๋ค.
- CSS ๋ณ์ ํ์ฉ: CSS ๋ณ์(์ฌ์ฉ์ ์ง์ ์์ฑ)๋ ์บ์ค์ผ์ด๋ ๋ ์ด์ด์ ํจ๊ป ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ์ฌ ํ ๋ง ๋ฐ ์คํ์ผ๋ง์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๋ ์ด์ด ์์ค์์ ๋ณ์๋ฅผ ์ ์ํ๊ณ , ํ์ ๋ ์ด์ด์์ ํด๋น ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ์คํ์ผ์ ์ ์ดํฉ๋๋ค.
- ์กฐ๊ฑด๋ถ ๋ ์ด์ด ๋ก๋ฉ: ํน์ ํ์ด์ง๋ ํน์ ์ฌ์ฉ์ ์ญํ ์ ๋ํด ๋ถํ์ํ ๋ ์ด์ด๋ฅผ ๋ก๋ํ์ง ์๋๋ก ์กฐ๊ฑด๋ถ ๋ก๋ฉ์ ๊ตฌํํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ๋ค์ด๋ก๋ํ๊ณ ์ฒ๋ฆฌํด์ผ ํ๋ CSS์ ์์ด ์ค์ด๋ญ๋๋ค.
- ํ์ฒ๋ฆฌ ๋ฐ ์ต์ ํ๋ฅผ ์ํ ๋น๋ ๋๊ตฌ ์ฌ์ฉ: PurgeCSS, Autoprefixer, CSSNano์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ด์ด๋ง ํ CSS๋ฅผ ์ถ๊ฐ๋ก ์ต์ ํํ๊ณ ํ์ผ ํฌ๊ธฐ๋ฅผ ์ค์ด์ญ์์ค.
- ๋ชจ๋ํฐ๋ง ๋ฐ ์ฑ๋ฅ ๋ถ์: CSS์ ์ฑ๋ฅ์ ์ ๊ธฐ์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ์ญ์์ค. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ๋๋ง ์ฑ๋ฅ์ ํ๋กํ์ผ๋งํ๊ณ ๋ถ์ํฉ๋๋ค. ๊ฐ ์์๋ฅผ ๋ ๋๋งํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ด๊ณ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํฉ๋๋ค. ํนํ ๋ช ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ต์ ํํ๋๋ก CSS๋ฅผ ์กฐ์ ํ์ญ์์ค.
์ค์ ์ฌ๋ก ๋ฐ ์ฌ์ฉ ์ฌ๋ก
์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ์ค์ ์ฌ๋ก๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- ์ ์์๊ฑฐ๋ ํ๋ซํผ (๊ธ๋ก๋ฒ): ์์ ์ธ๊ธํ๋ฏ์ด, ๊ธ๋ก๋ฒ ์ ์์๊ฑฐ๋ ํ๋ซํผ์ ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ํ ํ ๋ง(๋ผ์ดํธ/๋คํฌ ๋ชจ๋), ํ์งํ๋ ์ฝํ ์ธ (์๋์ด์ฉ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ ๋ ์ด์์), ์ปดํฌ๋ํธ ์คํ์ผ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ํ๋ซํผ์๋ ๊ธฐ๋ณธ, ํ ๋ง, ์ปดํฌ๋ํธ, ์ฌ์ ์ ๋ฑ ๋ค์ํ ๋ ์ด์ด๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค. ์ด ๋์์ธ์ ์คํ์ผ ์ถฉ๋์ ์ต์ํํ๊ณ ์ฌ์ฉ์ ์๊ตฌ ๋๋ ์์น์ ๋ฐ๋ผ ๊ฐ๋ณ ์คํ์ผ ์ธํธ๋ฅผ ์ฝ๊ฒ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์๋๋ก ํฉ๋๋ค.
- ๋์์ธ ์์คํ ๋ฐ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ: ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ ๋์์ธ ์์คํ ๋ฐ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ์ปดํฌ๋ํธ ์คํ์ผ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ช ํํ๊ณ ์ฒด๊ณ์ ์ธ ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ์ฌ ํต์ฌ ๋์์ธ ์์น์ด ์ ํ๋ฆฌ์ผ์ด์ ๋ณ ์คํ์ผ์ ์ํด ์ฐ๋ฐ์ ์ผ๋ก ์ฌ์ ์๋์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ์ฌ๋ฌ ํ์ด ์ฐธ์ฌํ๋ ๋๊ท๋ชจ ์น ์ ํ๋ฆฌ์ผ์ด์ : ์ฌ๋ฌ ํ์ด ๊ฐ๋ฐํ๋ ๋๊ท๋ชจ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ, ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ฅผ ํตํด ๊ฐ ํ์ด ๋ค๋ฅธ ํ์ ์คํ์ผ์ ์๋์น ์๊ฒ ๊ฐ์ญํ์ง ์๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ ์์ญ์์ ์์ ํ ์ ์์ต๋๋ค. ํต์ฌ ํ์ ๊ธฐ๋ณธ ๋ ์ด์ด์ ๊ณต์ ์ปดํฌ๋ํธ ๋ ์ด์ด๋ฅผ ์ค์ ํ๊ณ , ๊ฐ๋ณ ํ์ ํน์ ๊ธฐ๋ฅ์ ์ง์คํ์ฌ UI์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ณ ์์์น ๋ชปํ ์ถฉ๋์ ๋ฐฉ์งํฉ๋๋ค.
- ๋ค์ค ๋ธ๋๋ ์น์ฌ์ดํธ: ์ฌ๋ฌ ๋ธ๋๋๋ฅผ ๊ฐ์ง ํ์ฌ๋ ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋จ์ผ ์น์ฌ์ดํธ์์ ๋ธ๋๋๋ณ ์คํ์ผ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ๊ณตํต ์คํ์ผ์ ๊ธฐ๋ณธ ๋ ์ด์ด์ ์ ์ฅํ๊ณ , ๋ธ๋๋๋ณ ์คํ์ผ์ ๋ณ๋์ ๋ ์ด์ด์ ๋์ด ์ ํํ ๋ธ๋๋์ ๋ฐ๋ผ ์น์ฌ์ดํธ์ ๋ชจ์๊ณผ ๋๋์ ์ฝ๊ฒ ์ฌ์ฉ์ ์ง์ ํ ์ ์์ต๋๋ค.
- ์ฝํ ์ธ ๊ด๋ฆฌ ์์คํ (CMS): CMS๋ ๋ ์ด์ด๋ฅผ ์ฌ์ฉํ์ฌ ํต์ฌ CMS ์คํ์ผ์ ํ ๋ง๋ ์ฌ์ฉ์ ์ง์ ๊ณผ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค. ํ๋ซํผ ์์ ์๋ ๊ธฐ๋ณธ ๋ฐ ์ปดํฌ๋ํธ ๋ ์ด์ด๋ฅผ ์ ์ํ๊ณ , ํ ๋ง ๊ฐ๋ฐ์๋ CMS ๊ธฐ๋ณธ ๋ ์ด์ด๋ฅผ ์ฌ์ ์ํ์ง ์๋ ๋ณ๋์ ๋ ์ด์ด์์ ์ ํ ๋ง๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด ๊ตฌํ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ฅผ ์ต๋ํ ํ์ฉํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ค์ํ์ญ์์ค:
- ๋ ์ด์ด ๊ตฌ์กฐ ๊ณํ: ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ ์ ๋ ์ด์ด ๊ตฌ์กฐ๋ฅผ ์ ์คํ๊ฒ ๊ณํํ์ญ์์ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฒด ์ํคํ ์ฒ์ ์คํ์ผ์ ๊ตฌ์ฑํ๋ ค๋ ๋ฐฉ์์ ๊ณ ๋ คํ์ญ์์ค.
- ์ผ๊ด๋ ๋ช
๋ช
๊ท์น ์ฑํ: ๊ฐ๋
์ฑ๊ณผ ์ ์ง ๊ด๋ฆฌ์ฑ์ ํฅ์์ํค๊ธฐ ์ํด ๋ ์ด์ด์ ์ผ๊ด๋ ๋ช
๋ช
๊ท์น์ ์ฌ์ฉํ์ญ์์ค. ๋ ์ด์ด์ ๋ชฉ์ ์ ๋ช
ํํ ํ๊ธฐ ์ํด
@layer base;
,@layer theme;
๊ณผ ๊ฐ์ด ์ผ๊ด๋ ์๋ณ์๋ก ๋ ์ด์ด ์ ๋์ฌ๋ฅผ ๋ถ์ด์ญ์์ค. - ์ฒ ์ ํ ํ ์คํธ: ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ฅผ ๊ตฌํํ ํ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒ ์ ํ ํ ์คํธํ์ฌ ์คํ์ผ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์ ์ฉ๋๊ณ ์์์น ๋ชปํ ์ถฉ๋์ด ์๋์ง ํ์ธํ์ญ์์ค.
- ๋น๋ ๋๊ตฌ ์ฌ์ฉ: ๋น๋ ๋๊ตฌ๋ฅผ ํ์ฉํ์ฌ CSS ์ถ์, ๋ฒ๋ค๋ง, ์ฝ๋ ๋ถํ ๊ณผ ๊ฐ์ ์์ ์ ์๋ํํ์ญ์์ค. ์ด๋ CSS๋ฅผ ์ต์ ํํ๊ณ ์ฑ๋ฅ์ ํฅ์์ํฌ ๊ฒ์ ๋๋ค.
- ๋ ์ด์ด ๋ฌธ์ํ: ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ์คํ์ผ์ ๊ตฌ์ฑ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋๋๋ก ๋ ์ด์ด ๊ตฌ์กฐ๋ฅผ ๋ฌธ์ํํ์ญ์์ค. ์ด๋ ๊ทธ๋ค์ด ์ฝ๋๋ฅผ ์ ์ง ๊ด๋ฆฌํ๊ณ ์์ ํ๋ ๊ฒ์ ๋ ์ฝ๊ฒ ๋ง๋ค ๊ฒ์ ๋๋ค.
- ๋ ์ด์ด ๋ด ๋ช ์๋ ๊ณ ๋ ค: ์บ์ค์ผ์ด๋ ๋ ์ด์ด๊ฐ ๋ง์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ง๋ง, ์ฃผ์ด์ง ๋ ์ด์ด ๋ด์์ ๋ ๊ตฌ์ฒด์ ์ธ ์คํ์ผ์ด ๋ ๊ตฌ์ฒด์ ์ธ ์คํ์ผ์ ๋ฎ์ด์ด๋ค๋ ์ ์ ๋ช ์ฌํ์ญ์์ค.
๊ธ๋ก๋ฒ ๊ณ ๋ ค์ฌํญ ๋ฐ ์ํฅ
๊ธ๋ก๋ฒ ๊ณ ๊ฐ์ ์ํด ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ฅผ ๊ตฌํํ ๋ ๋ค์ ์ธก๋ฉด์ ๊ณ ๋ คํ์ญ์์ค:
- ํ์งํ ๋ฐ ๊ตญ์ ํ(i18n): CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ ํ์งํ ์์ ์ ๊ฐ์ํํ ์ ์์ต๋๋ค. ์ธ์ด๋ณ ์คํ์ผ์ ์์ฒด ๋ ์ด์ด๋ก ๊ตฌ์ฑํ์ฌ ๊ธฐ๋ณธ ๋์์ธ์ ๊นจ์ง ์๊ณ ๊ธฐ๋ณธ ์คํ์ผ์ ์ฌ์ ์ํ๋๋ก ํฉ๋๋ค.
- ์ ๊ทผ์ฑ(a11y): ๊ธ๋ก๋ฒ ๊ณ ๊ฐ์ ์ํด ๋์์ธํ ๋ ์ ๊ทผ์ฑ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ ์ด์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผ์ฑ ๊ด๋ จ ์คํ์ผ์ ๋ถ๋ฆฌํฉ๋๋ค. ์ฌ์ฉ์ ์ ํธ๋๋ ์ฅ์น ๊ธฐ๋ฅ์ ๋ฐ๋ผ ์ ๊ทผ์ฑ์ ์ค์ ์ ๋ ์คํ์ผ์ ์ ์ฉํ ์ ์์ต๋๋ค.
- ๋ค์ํ ๋คํธ์ํฌ์์์ ์ฑ๋ฅ: ๋คํธ์ํฌ ์กฐ๊ฑด์ ์ผ๋์ ๋๊ณ ๋์์ธํ์ญ์์ค. CSS ํ์ผ ํฌ๊ธฐ์ ์์ฒญ ์๋ฅผ ์ต์ ํํ๋ฉด ํนํ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ์ข์ง ์์ ์ง์ญ์์ ์ฌ์ฉ์ ๊ฒฝํ์ด ํฅ์๋ฉ๋๋ค.
- ์ฌ์ฉ์ ๊ฒฝํ(UX): ์คํ์ผ์ด ๊ธ๋ก๋ฒ ์ฌ์ฉ์์ ํ์ง UI/UX ๊ธฐ๋์น์ ๋ถ์ํ๋์ง ํ์ธํ์ญ์์ค. ํ ๋ง ๋ ์ด์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋์ ์ง์ญ์ ๋ฌธํ์ ๊ณต๊ฐ๋๋ฅผ ํ์ฑํ๋ ์์ ํ๋ ํธ, ํ์ดํฌ๊ทธ๋ํผ, ๋ ์ด์์ ํจํด์ ๊ด๋ฆฌํ์ญ์์ค.
- ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN): CDN์ ํ์ฉํ์ฌ CSS ํ์ผ์ ์บ์ํ๊ณ ๊ธ๋ก๋ฒ ์ฌ์ฉ์์๊ฒ ๋ ๊ฐ๊น์ด์์ ์ ๋ฌํ์ญ์์ค.
CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด์ ๋ฏธ๋
CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ ๋น๊ต์ ์๋ก์ด ๊ธฐ๋ฅ์ด์ง๋ง ํ๋ก ํธ์๋ ๊ฐ๋ฐ ์ปค๋ฎค๋ํฐ์์ ๋น ๋ฅด๊ฒ ์ฃผ๋ชฉ๋ฐ๊ณ ์์ต๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ์ง์์ ๊ณ์ ๊ฐ์ ํจ์ ๋ฐ๋ผ ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ ํ๋ก ํธ์๋ ์ํฌํ๋ก์ฐ์ ๋์ฑ ํตํฉ๋ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ๋ฏธ๋์๋ ๋ค์๊ณผ ๊ฐ์ ์ถ๊ฐ์ ์ธ ๋ฐ์ ์ ๋ณผ ์ ์์ ๊ฒ์ ๋๋ค:
- ํฅ์๋ ๋๊ตฌ: ๋ ๋ง์ ๋น๋ ๋๊ตฌ์ IDE ํตํฉ์ด ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ฅผ ๋ ์ ์ง์ํ์ฌ ๊ตฌํ ๋ฐ ๊ด๋ฆฌ๋ฅผ ๋ ์ฝ๊ฒ ๋ง๋ค ๊ฒ์ ๋๋ค.
- ๊ณ ๊ธ ๋ ์ด์ด๋ง ๊ธฐ๋ฅ: ์ฌ์ฉ์ ์ ํธ๋๋ ์ฅ์น ํน์ฑ์ ๋ฐ๋ผ ์กฐ๊ฑด๋ถ๋ก ๋ ์ด์ด๋ฅผ ์ ์ฉํ๋ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ด ์บ์ค์ผ์ด๋ ๋ ์ด์ด์ ์ถ๊ฐ๋ ์ ์์ต๋๋ค.
- ๋ ๋์ ๋ธ๋ผ์ฐ์ ์ฑํ: ๋ชจ๋ ์ฃผ์ ๋ธ๋ผ์ฐ์ ์ ์ง์์ ์ธ ์ฑํ์ ๋ ๋์ ๊ตฌํ๊ณผ ๋ ๋ฐ์ ๋ ๊ธฐ์ ๋ก ์ด์ด์ง ๊ฒ์ ๋๋ค.
๊ฒฐ๋ก : ๋ ๋์ ์น์ ์ํ ๊ณ์ธตํ๋ CSS ์์ฉ
CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ CSS ๋ณต์ก์ฑ์ ๊ด๋ฆฌํ๊ณ ์น ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ฐ ์์ด ์ค์ํ ์ง์ ์ ๋ํ๋ ๋๋ค. ์ด ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ์ ์ฑํํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ๋ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ณ , ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ, ๊ณ ์ฑ๋ฅ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค. ์น ๊ฐ๋ฐ์ด ๊ณ์ ์งํํจ์ ๋ฐ๋ผ CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ ์์ฌํ ์ฌ์ง ์์ด ๋ชจ๋ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์์ ๋ฌด๊ธฐ๊ณ ์์ ํ์์ ์ธ ๋๊ตฌ๊ฐ ๋ ๊ฒ์ ๋๋ค. ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ฑํํ๊ณ , ๊ธ๋ก๋ฒ ์ํฅ์ ๊ณ ๋ คํ๋ฉฐ, ์๋ก์ด ๊ฐ๋ฐ์ ๋ํ ์ ๋ณด๋ฅผ ์ง์์ ์ผ๋ก ํ์ธํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ CSS ์บ์ค์ผ์ด๋ ๋ ์ด์ด๋ฅผ ํ์ฉํ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋ ํจ์จ์ ์ด๊ณ ์ ๊ทผ ๊ฐ๋ฅํ๋ฉฐ ์ฆ๊ฑฐ์ด ์น ๊ฒฝํ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.