CSS cascade layers๋ฅผ @import์ ํจ๊ป ์ฌ์ฉํ์ฌ ์คํ์ผ์ํธ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ตฌ์ฑํ๊ณ , ์ ์ง ๊ด๋ฆฌ์ฑ์ ๊ฐ์ ํ๋ฉฐ, ๋ณต์กํ ํ๋ก์ ํธ์์ ์คํ์ผ ์ฐ์ ์์๋ฅผ ์ ์ดํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์ธ์.
CSS Cascade Layers ๋ง์คํฐํ๊ธฐ: ํฅ์๋ ๊ตฌ์ฑ์ ์ํ ์ธ๋ถ ์คํ์ผ์ํธ ๊ฐ์ ธ์ค๊ธฐ
CSS cascade layers๋ ํนํ ํฌ๊ณ ๋ณต์กํ ํ๋ก์ ํธ์์ CSS ์คํ์ผ์ ๊ตฌ์ฑํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. cascade layers๋ฅผ @import
๊ท์น๊ณผ ์ ๋ต์ ์ผ๋ก ํจ๊ป ์ฌ์ฉํ๋ฉด ์คํ์ผ ์ฐ์ ์์์ ๋ํ ๋ ๋์ ์์ค์ ์ ์ด๋ฅผ ์ป๊ณ ์คํ์ผ์ํธ์ ์ ์ง ๊ด๋ฆฌ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋์์๋ cascade layers ๋ด์์ @import
๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ ๊ฒ์ ์ดํด๋ณด๊ณ , ์ด ๊ธฐ์ ์ ํ๋ก์ ํธ์ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํ๋ ๋ฐ ๋์์ด ๋๋ ์ค์ฉ์ ์ธ ์์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค.
CSS Cascade ๋ฐ ๊ตฌ์ฒด์ฑ ์ดํด
cascade layers์ @import
๋ฅผ ์ดํด๋ณด๊ธฐ ์ ์ CSS cascade ๋ฐ ๊ตฌ์ฒด์ฑ์ ๊ธฐ๋ณธ ๊ฐ๋
์ ์ดํดํ๋ ๊ฒ์ด ํ์์ ์
๋๋ค. cascade๋ ์ฌ๋ฌ ๊ท์น์ด ๋์ผํ ์์ฑ์ ๋์์ผ๋ก ํ ๋ ์ด๋ค ์คํ์ผ์ด ์์์ ์ ์ฉ๋๋์ง ๊ฒฐ์ ํฉ๋๋ค. ๋ฐ๋ฉด์ ๊ตฌ์ฒด์ฑ์ ์ง์ ๋ CSS ์ ์ธ์ ํ ๋น๋ ๊ฐ์ค์น์ด๋ฉฐ, ์ผ์นํ๋ ์ ํ์์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค.
cascade๋ ๋ค์์ ํฌํจํ ์ฌ๋ฌ ์์๋ฅผ ๊ณ ๋ คํฉ๋๋ค.
- ์ค์๋:
!important
๊ฐ ์๋ ์ ์ธ์ ์๋ ์ ์ธ์ ์ฌ์ ์ํฉ๋๋ค. - ๊ตฌ์ฒด์ฑ: ๋ ๊ตฌ์ฒด์ ์ธ ์ ํ์๋ ๋ ๊ตฌ์ฒด์ ์ธ ์ ํ์๋ฅผ ์ฌ์ ์ํฉ๋๋ค.
- ์์ค ์์: ๋์ค ์ ์ธ์ ์ด์ ์ ์ธ์ ์ฌ์ ์ํฉ๋๋ค.
cascade layers๋ cascade์ ์๋ก์ด ์ฐจ์์ ๋์ ํ์ฌ ์คํ์ผ์ ๋ ผ๋ฆฌ์ ๋ ์ด์ด๋ก ๊ทธ๋ฃนํํ๊ณ ์๋์ ์ฐ์ ์์๋ฅผ ์ ์ดํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ ์ฌ์ฉ์ ์ง์ ์คํ์ผ์ด ๊ธฐ๋ณธ ์คํ์ผ์ ์ผ๊ด๋๊ฒ ์ฌ์ ์ํ๋๋ก ํ๋ ค๋ ์ธ๋ถ ์คํ์ผ์ํธ ๋ฐ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ ๋ ํนํ ์ ์ฉํฉ๋๋ค.
CSS Cascade Layers ์๊ฐ
Cascade layers๋ฅผ ์ฌ์ฉํ๋ฉด ๋ช ์์ ์คํ์ผ ๋ ์ด์ด๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. CSS ๊ท์น์ ์ปจํ ์ด๋๋ผ๊ณ ์๊ฐํ์ญ์์ค. ์ด๋ฌํ ๋ ์ด์ด๋ ์ ์๋ ์ฐ์ ์์๊ฐ ์์ด ๋ค๋ฅธ ์์ค์ ์คํ์ผ์ด ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ์ ์ดํ ์ ์์ต๋๋ค. ์ด๋ ๋๊ท๋ชจ ํ๋ก์ ํธ, ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ ์คํ์ผ์ ๋ ์ ๊ตฌ์ฑํด์ผ ํ ๋ ํนํ ์ ์ฉํฉ๋๋ค.
@layer
at-rule์ ์ฌ์ฉํ์ฌ cascade layers๋ฅผ ์ ์ํ ์ ์์ต๋๋ค.
@layer base;
@layer components;
@layer utilities;
์ด๋ฌํ ๋ ์ด์ด๋ ๋ ๊ตฌ์ฒด์ ์ธ ๊ฒ๋ถํฐ ๊ฐ์ฅ ๊ตฌ์ฒด์ ์ธ ๊ฒ๊น์ง ์ฐ์ ์์ ์์๋ก ์ ์๋ฉ๋๋ค. ์ด ์์์ base
๋ ๊ฐ์ฅ ๋ ๊ตฌ์ฒด์ ์ด๊ณ utilities
๋ ๊ฐ์ฅ ๊ตฌ์ฒด์ ์
๋๋ค.
Cascade Layers์ ํจ๊ป @import
์ฌ์ฉ
@import
๊ท์น์ ์ฌ์ฉํ๋ฉด ์ธ๋ถ ์คํ์ผ์ํธ๋ฅผ CSS๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. cascade layers์ ํจ๊ป ์ฌ์ฉํ๋ฉด @import
๋ ์คํ์ผ์ ๊ตฌ์ฑํ๊ณ ์ฐ์ ์์๋ฅผ ์ง์ ํ๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
cascade layers์ ํจ๊ป @import
๋ฅผ ์ฌ์ฉํ๋ ๋ ๊ฐ์ง ์ฃผ์ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
- ํน์ ๋ ์ด์ด๋ก ๊ฐ์ ธ์ค๊ธฐ: ์ด๋ ๊ฒ ํ๋ฉด ์ธ๋ถ ์คํ์ผ์ํธ๋ฅผ ํน์ ๋ ์ด์ด์ ํ ๋นํ์ฌ ๋ค๋ฅธ ๋ ์ด์ด์ ๊ด๋ จ๋ ์ฐ์ ์์๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค.
- ๋ ์ด์ด๋ฅผ ์ ์ํ๊ธฐ ์ ์ ๊ฐ์ ธ์ค๊ธฐ: ์ด๋ ๊ฒ ํ๋ฉด ์คํ์ผ์ํธ๋ฅผ ์ต๋ช ๋ ์ด์ด๋ก ๊ฐ์ ธ์ค๋ฉฐ, ์ด๋ ๊ฐ์ฅ ๋ฎ์ ์ฐ์ ์์๋ฅผ ๊ฐ์ต๋๋ค.
ํน์ ๋ ์ด์ด๋ก ๊ฐ์ ธ์ค๊ธฐ
์ธ๋ถ ์คํ์ผ์ํธ๋ฅผ ํน์ ๋ ์ด์ด๋ก ๊ฐ์ ธ์ค๋ ค๋ฉด @import
๊ท์น ๋ด์์ layer()
ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
@layer base, components, utilities;
@import url("reset.css") layer(base);
@import url("components.css") layer(components);
@import url("utilities.css") layer(utilities);
์ด ์์์ reset.css
๋ base
๋ ์ด์ด๋ก, components.css
๋ components
๋ ์ด์ด๋ก, utilities.css
๋ utilities
๋ ์ด์ด๋ก ๊ฐ์ ธ์ต๋๋ค. @import
๊ท์น์ด CSS ํ์ผ์ ๋ํ๋๋ ์์๋ ๋ ์ด์ด์ ์ฐ์ ์์์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ๋ ์ด์ด๋ ํญ์ @layer
๊ท์น(base, components, utilities)์ ์ํด ์ ์๋ ์์๋ก ์ ์ฉ๋ฉ๋๋ค.
๋ ์ด์ด๋ฅผ ์ ์ํ๊ธฐ ์ ์ ๊ฐ์ ธ์ค๊ธฐ
๋ ์ด์ด๋ฅผ ์ ์ํ๊ธฐ ์ ์ ์คํ์ผ์ํธ๋ฅผ ๊ฐ์ ธ์ค๋ฉด ๊ฐ์ฅ ๋ฎ์ ์ฐ์ ์์๋ฅผ ๊ฐ๋ ์ต๋ช ๋ ์ด์ด์ ๋ฐฐ์น๋ฉ๋๋ค. ์ด๋ ์ฌ์ฉ์ ๊ณ ์ ์ ์คํ์ผ๋ก ์ฝ๊ฒ ์ฌ์ ์ํ๋ ค๋ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ํ๋ ์์ํฌ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
@import url("bootstrap.css");
@layer base, components, utilities;
@import url("base.css") layer(base);
@import url("components.css") layer(components);
@import url("utilities.css") layer(utilities);
์ด ์์์ bootstrap.css
๋ ์ต๋ช
๋ ์ด์ด๋ก ๊ฐ์ ธ์ค๋ฉฐ, ์ด๋ base
, components
๋๋ utilities
๋ ์ด์ด์ ์ ์๋ ๋ชจ๋ ์คํ์ผ์ด bootstrap.css
์ ์คํ์ผ์ ์ฌ์ ์ํจ์ ์๋ฏธํฉ๋๋ค.
Cascade Layers์ ํจ๊ป @import
์ฌ์ฉ์ ์ค์ฉ์ ์ธ ์
CSS ์คํ์ผ์ ๊ตฌ์ฑํ๊ณ ์ฐ์ ์์๋ฅผ ์ง์ ํ๊ธฐ ์ํด cascade layers์ ํจ๊ป @import
๋ฅผ ์ฌ์ฉํ๋ ๋ช ๊ฐ์ง ์ค์ฉ์ ์ธ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์ 1: ๋์์ธ ์์คํ ๊ด๋ฆฌ
๋ค์ ๋ ์ด์ด๋ฅผ ํฌํจํ๋ ๋์์ธ ์์คํ ์ ๊ณ ๋ คํ์ญ์์ค.
- Base: ๋ฆฌ์ ์คํ์ผ, ํ์ดํฌ๊ทธ๋ํผ ๋ฐ ๊ธฐ๋ณธ ์์ ํ๋ ํธ๋ฅผ ํฌํจํฉ๋๋ค.
- Components: ๋ฒํผ, ์์ ๋ฐ ํ์ ๋ฉ๋ด์ ๊ฐ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI ๊ตฌ์ฑ ์์์ ๋ํ ์คํ์ผ์ ํฌํจํฉ๋๋ค.
- Themes: ๋ฐ์ ๋ชจ๋ ๋ฐ ์ด๋์ด ๋ชจ๋์ ๊ฐ์ ๋ค์ํ ํ ๋ง์ ๋ํ ์คํ์ผ์ ํฌํจํฉ๋๋ค.
- Overrides: ๋ค๋ฅธ ๋ ์ด์ด์ ๊ธฐ๋ณธ ์คํ์ผ์ ์ฌ์ ์ํ๋ ์คํ์ผ์ ํฌํจํฉ๋๋ค.
@import
๋ฅผ ์ฌ์ฉํ์ฌ ๋์์ธ ์์คํ
์ CSS ํ์ผ์ ๊ตฌ์ฑํ๊ณ ์ ์ ํ ๋ ์ด์ด์ ํ ๋นํ ์ ์์ต๋๋ค.
@layer base, components, themes, overrides;
@import url("base/reset.css") layer(base);
@import url("base/typography.css") layer(base);
@import url("base/colors.css") layer(base);
@import url("components/button.css") layer(components);
@import url("components/form.css") layer(components);
@import url("components/navigation.css") layer(components);
@import url("themes/light.css") layer(themes);
@import url("themes/dark.css") layer(themes);
@import url("overrides/custom.css") layer(overrides);
์ด ๊ตฌ์กฐ๋ overrides
๋ ์ด์ด๊ฐ ํญ์ ๊ฐ์ฅ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ๋๋ก ํ์ฌ ํต์ฌ CSS ํ์ผ์ ์์ ํ์ง ์๊ณ ๋ ๋์์ธ ์์คํ
์ ์คํ์ผ์ ์ฝ๊ฒ ์ฌ์ฉ์ ์ง์ ํ ์ ์๋๋ก ํฉ๋๋ค.
์์ 2: ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํตํฉ
Bootstrap ๋๋ Materialize์ ๊ฐ์ ํ์ฌ CSS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ CSS ํ์ผ์ ์ต๋ช ๋ ์ด์ด๋ก ๊ฐ์ ธ์จ ๋ค์ ์์ฒด ๋ ์ด์ด๋ฅผ ๋ง๋ค์ด ๊ธฐ๋ณธ ์คํ์ผ์ ์ฌ์ ์ํ ์ ์์ต๋๋ค.
@import url("bootstrap.css");
@layer base, components, utilities;
@import url("base.css") layer(base);
@import url("components.css") layer(components);
@import url("utilities.css") layer(utilities);
์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์น ์ฌ์ดํธ์ ์ ์ฒด ๋ชจ์๊ณผ ๋๋์ ์ ์ดํ๋ฉด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ตฌ์ฑ ์์ ๋ฐ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ ์๋ ๋ ์ด์ด์ ๊ณ ์ ํ ์คํ์ผ์ Bootstrap์ ๊ธฐ๋ณธ ์คํ์ผ์ ์ฌ์ ์ํฉ๋๋ค.
์์ 3: ์ ์ญ ์คํ์ผ ๋ฐ ๊ตฌ์ฑ ์์๋ณ ์คํ์ผ ๊ด๋ฆฌ
ํ์ดํฌ๊ทธ๋ํผ ๋ฐ ์์๊ณผ ๊ฐ์ ํญ๋ชฉ์ ๋ํ ์ ์ญ ์คํ์ผ๊ณผ ๊ฐ๋ณ ๊ตฌ์ฑ ์์์ ๋ํ ๋ณด๋ค ๊ตฌ์ฒด์ ์ธ ์คํ์ผ์ด ์๋ ์๋๋ฆฌ์ค๋ฅผ ์์ํด ๋ณด์ญ์์ค.
@layer global, components;
@import url("global.css") layer(global);
@import url("button.css") layer(components);
@import url("form.css") layer(components);
์ด ๊ตฌ์กฐ๋ ์ถฉ๋์ด ์๋ ๊ฒฝ์ฐ ๊ตฌ์ฑ ์์๋ณ ์คํ์ผ(์: button.css, form.css)์ด ์ ์ญ ์คํ์ผ(global.css)๋ณด๋ค ์ฐ์ ์์๋ฅผ ๊ฐ๋๋ก ํฉ๋๋ค.
Cascade Layers์ ํจ๊ป @import
์ฌ์ฉ์ ๋ํ ๋ชจ๋ฒ ์ฌ๋ก
cascade layers์ ํจ๊ป @import
๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
- ๋ ์ด์ด๋ฅผ ๋ช
์์ ์ผ๋ก ์ ์ํฉ๋๋ค.
@layer
๊ท์น์ ์ฌ์ฉํ์ฌ cascade layers์ ์ฐ์ ์์ ์์๋ฅผ ์ ์ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์คํ์ผ์ด ์ ์ฉ๋๋ ๋ฐฉ์์ด ๋ช ํํด์ง๊ณ ์๊ธฐ์น ์์ ๋์์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. - CSS ํ์ผ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ตฌ์ฑํฉ๋๋ค. ์ ์ํ ๋ ์ด์ด์ ๋ฐ๋ผ CSS ํ์ผ์ ๊ตฌ์ฑํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์คํ์ผ์ ๋ ์ฝ๊ฒ ์ ์ง ๊ด๋ฆฌํ๊ณ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
- ์ค๋ช
์ ์ธ ๋ ์ด์ด ์ด๋ฆ์ ์ฌ์ฉํฉ๋๋ค. ๊ฐ ๋ ์ด์ด์ ๋ชฉ์ ์ ๋ช
ํํ๊ฒ ๋ํ๋ด๋ ๋ ์ด์ด ์ด๋ฆ์ ์ ํํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฝ๋์ ๊ฐ๋
์ฑ๊ณผ ์ ์ง ๊ด๋ฆฌ์ฑ์ด ํฅ์๋ฉ๋๋ค. ์:
base
,components
,themes
,utilities
,overrides
. - CSS ํ์ผ ์๋จ์์ ์คํ์ผ์ํธ๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์คํ์ผ์ด ์ ์ฉ๋๊ธฐ ์ ์ ๋ ์ด์ด๊ฐ ์ ์๋ฉ๋๋ค.
- ๊น์ด ์ค์ฒฉ๋ ๋ ์ด์ด๋ฅผ ํผํฉ๋๋ค. cascade layers๋ฅผ ์ค์ฒฉํ ์ ์์ง๋ง ๋ณต์ก์ฑ์ ํผํ๊ธฐ ์ํด ์ค์ฒฉ ์์ค์ ์๊ฒ ์ ์งํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ์ฑ๋ฅ ์ํฅ์ ๊ณ ๋ คํฉ๋๋ค.
@import
๋ ์คํ์ผ์ ๊ตฌ์ฑํ๋ ๋ฐ ์ ์ฉํ ์ ์์ง๋ง ์ฑ๋ฅ์๋ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ๊ฐ@import
๊ท์น์ ์ถ๊ฐ HTTP ์์ฒญ์ ๋ฐ์์์ผ ์น ์ฌ์ดํธ์ ๋ก๋ ์๊ฐ์ ๋ฆ์ถ ์ ์์ต๋๋ค. ํ๋ก๋์ ํ๊ฒฝ์ ๊ฒฝ์ฐ CSS ํ์ผ์ ๋จ์ผ ํ์ผ๋ก ๋ฒ๋ค๋งํ์ฌ HTTP ์์ฒญ ์๋ฅผ ์ค์ด๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. Webpack, Parcel ๋ฐ Rollup๊ณผ ๊ฐ์ ๋น๋ ๋๊ตฌ๋ ์ด ํ๋ก์ธ์ค๋ฅผ ์๋ํํ ์ ์์ต๋๋ค. ๋ํ HTTP/2๋ ์ฌ๋ฌ ์์ฒญ๊ณผ ๊ด๋ จ๋ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ํํ ์ ์์ง๋ง ํนํ ์ฐ๊ฒฐ ์๋๊ฐ ๋๋ฆฐ ์ฌ์ฉ์๋ฅผ ์ํด ์ต์ ์ ์ฑ๋ฅ์ ์ํด ๋ฒ๋ค๋งํ๋ ๊ฒ์ด ์ข์ต๋๋ค. - CSS ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. Sass ๋๋ Less์ ๊ฐ์ CSS ์ ์ฒ๋ฆฌ๊ธฐ๋ ๋ณ์, ๋ฏน์ค์ธ ๋ฐ ์ค์ฒฉ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ CSS ํ์ผ์ ๋ณด๋ค ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ๋ํ ํ๋ก๋์ ์ ์ํด CSS ํ์ผ์ ๋จ์ผ ํ์ผ๋ก ๋ฒ๋ค๋งํ๋ ๋ฐ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
ํผํด์ผ ํ ์ผ๋ฐ์ ์ธ ํจ์
cascade layers๋ ๊ฐ๋ ฅํ์ง๋ง ํผํด์ผ ํ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ํจ์ ์ด ์์ต๋๋ค.
- ๊ณผ๋ํ๊ฒ ๋ณต์กํ ๋ ์ด์ด ๊ตฌ์กฐ: ๋๋ฌด ๋ง์ ๋ ์ด์ด ๋๋ ๊น์ด ์ค์ฒฉ๋ ๋ ์ด์ด๋ฅผ ๋ง๋ค์ง ๋ง์ญ์์ค. ์ด๋ ๊ฒ ํ๋ฉด CSS๋ฅผ ์ดํดํ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๋ ์ด์ด ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ฅํ ํ ๋จ์ํ๊ฒ ์ ์งํ์ญ์์ค.
- ์๋ชป๋ ๋ ์ด์ด ์์: ๋ ์ด์ด๊ฐ ์ฌ๋ฐ๋ฅธ ์ฐ์ ์์ ์์๋ก ์ ์๋์ด ์๋์ง ํ์ธํฉ๋๋ค. ์๋ชป๋ ๋ ์ด์ด ์์๋ ์์์น ๋ชปํ ์คํ์ผ๋ง ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค.
@layer
์ ์๊ฐ ์๋ํ ์คํ์ผ๋ง ๊ณ์ธต ๊ตฌ์กฐ์ ์ผ์นํ๋์ง ๋ค์ ํ์ธํฉ๋๋ค. - ๊ตฌ์ฒด์ฑ ์ ์: cascade layers๋ ๊ตฌ์ฒด์ฑ์ ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋์ง๋ง ์์ ํ ์ ๊ฑฐํ์ง๋ ์์ต๋๋ค. CSS ๊ท์น์ ์์ฑํ ๋ ๊ตฌ์ฒด์ฑ์ ์ ์ํ๊ณ ๊ณผ๋ํ๊ฒ ๊ตฌ์ฒด์ ์ธ ์ ํ๊ธฐ๋ฅผ ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
!important
์ ๋จ์ฉ์ CSS๋ฅผ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ค ์ ์์ผ๋ฉฐ cascade layers์ CSS ๊ท์น์ ์ ์ ํ๊ฒ ๊ตฌ์ฑํ์ฌ ์ข ์ข ํผํ ์ ์์ต๋๋ค. - ์ฑ๋ฅ ๋ฌด์: ์์ ์ธ๊ธํ๋ฏ์ด
@import
๋ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ํ๋ก๋์ ์ ์ํด CSS ํ์ผ์ ๋ฒ๋ค๋งํ์ฌ HTTP ์์ฒญ ์๋ฅผ ์ค์ด์ญ์์ค. ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ CSS๋ฅผ ๋ถ์ํ๊ณ ์ ์ฌ์ ์ธ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํฉ๋๋ค. - ๋ฌธ์ ๋ถ์กฑ: cascade layer ๊ตฌ์กฐ์ ๊ฐ ๋ ์ด์ด์ ๋ชฉ์ ์ ๋ฌธ์ํํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ์ดํดํ๊ณ ์ ์ง ๊ด๋ฆฌํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ ๋ฌธ์๋ ํ ํ์ ๊ณผ ์ฅ๊ธฐ์ ์ธ ์ ์ง ๊ด๋ฆฌ์ ๋งค์ฐ ์ค์ํฉ๋๋ค.
Cascade Layers์ ํจ๊ป @import
์ ๋์
@import
๊ฐ ์ ์ฉํ ์ ์์ง๋ง ํนํ ๋๊ท๋ชจ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ CSS๋ฅผ ๊ด๋ฆฌํ๋ ๋์ฒด ์ ๊ทผ ๋ฐฉ์์ด ์์ต๋๋ค.
- CSS Modules: CSS Modules๋ ๊ฐ๋ณ ๊ตฌ์ฑ ์์ ๋ด์์ CSS ์คํ์ผ์ ์บก์ํํ์ฌ ์ด๋ฆ ์ถฉ๋์ ๋ฐฉ์งํ๊ณ ์ ์ง ๊ด๋ฆฌ์ฑ์ ํฅ์์ํค๋ ์ธ๊ธฐ ์๋ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค.
- Styled Components: Styled Components(React์ฉ)๋ฅผ ์ฌ์ฉํ๋ฉด JavaScript ๊ตฌ์ฑ ์์ ๋ด์์ ์ง์ CSS๋ฅผ ์์ฑํ์ฌ ์คํ์ผ๊ณผ ๊ตฌ์ฑ ์์ ๊ฐ์ ๊ธด๋ฐํ ํตํฉ์ ์ ๊ณตํ ์ ์์ต๋๋ค.
- Tailwind CSS: Tailwind CSS๋ HTML ์์๋ฅผ ์คํ์ผ๋งํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ฌ์ ์ ์๋ ์ ํธ๋ฆฌํฐ ํด๋์ค ์ธํธ๋ฅผ ์ ๊ณตํ๋ ์ ํธ๋ฆฌํฐ ์ฐ์ CSS ํ๋ ์์ํฌ์ ๋๋ค.
- BEM(Block, Element, Modifier): BEM์ ๋ชจ๋์์ด๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ CSS ๊ตฌ์ฑ ์์๋ฅผ ๋ง๋๋ ๋ฐ ๋์์ด ๋๋ ๋ช ๋ช ๊ท์น์ ๋๋ค.
- ๋ฒ๋ค๋ง ๋ฐ ์ถ์: Webpack, Parcel ๋๋ Rollup๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ CSS ํ์ผ์ ๋ฒ๋ค๋งํ๊ณ ์ถ์ํ๋ฉด CSS ๊ตฌ์กฐ์ ๊ด๊ณ์์ด ์ฑ๋ฅ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ข์ ์ ๊ทผ ๋ฐฉ์์ ํ๋ก์ ํธ์ ํน์ ์๊ตฌ ์ฌํญ๊ณผ ์ฝ๋๋ฒ ์ด์ค์ ํฌ๊ธฐ ๋ฐ ๋ณต์ก์ฑ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
๋ธ๋ผ์ฐ์ ์ง์
Cascade layers์ @layer
๊ท์น์ Chrome, Firefox, Safari ๋ฐ Edge๋ฅผ ํฌํจํ ์ต์ ๋ธ๋ผ์ฐ์ ์์ ๋ฐ์ด๋ ๋ธ๋ผ์ฐ์ ์ง์์ ์ ๊ณตํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ธ๋ผ์ฐ์ ๋ ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ง์ํ์ง ์์ ์ ์์ต๋๋ค. ๋์ ๋ธ๋ผ์ฐ์ ์์ cascade layers์ ํธํ์ฑ์ ํ์ธํ๊ณ ํ์ํ ๊ฒฝ์ฐ ์ด์ ๋ธ๋ผ์ฐ์ ์ ๋ํ ๋์ฒด ์คํ์ผ์ ์ ๊ณตํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. Can I Use์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ cascade layers์ ๋ํ ๋ธ๋ผ์ฐ์ ์ง์์ ํ์ธํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก
@import
์ ํจ๊ป ์ฌ์ฉ๋๋ CSS cascade layers๋ CSS ์คํ์ผ์ ๊ตฌ์ฑํ๊ณ ์ฐ์ ์์๋ฅผ ์ง์ ํ๋ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. cascade ๋ฐ ๊ตฌ์ฒด์ฑ์ ๊ฐ๋
์ ์ดํดํ๊ณ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉด cascade layers๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ์ ์ ์ง ๊ด๋ฆฌ์ฑ ๋ฐ ํ์ฅ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ํน์ ์๊ตฌ ์ฌํญ์ ๊ฐ์ฅ ์ ํฉํ ๋ ์ด์ด ๊ตฌ์กฐ์ ๊ธฐ์ ์ ์คํํด ๋ณด์ญ์์ค. ์ฑ๋ฅ ์ํฅ์ ๊ณ ๋ คํ๊ณ ํ์ํ ๊ฒฝ์ฐ ์ด์ ๋ธ๋ผ์ฐ์ ์ ๋ํ ๋์ฒด ์คํ์ผ์ ์ ๊ณตํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค. ์ ์คํ ๊ณํ๊ณผ ์คํ์ ํตํด cascade layers๋ฅผ ํ์ฉํ์ฌ ์ ๊ตฌ์ฑ๋๊ณ ์ ์ง ๊ด๋ฆฌ ๊ฐ๋ฅํ CSS ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.