[ Sass(SCSS) ] ์ ์ , ๊ธฐ๋ณธ ๋ฌธ๋ฒ
๐ฌ ๊ฐ์
์ฒ์์๋ CSS๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ์ ํ๋๋ฐ,
๊ฐ๋จํ ๋ ์ด์์์์๋ ๊ด์ฐฎ์์ง๋ง ํ๋ฉด์ด ๋ณต์กํ๊ณ ๋ง์์ง๊ธฐ ์์ํ๋ฉด์
๋ด๊ฐ ์์ฑํ ์ฝ๋์ง๋ง ํ๋์ ์์๋ณด๊ธฐ ์ด๋ ค์ ๊ณ ๋์ค์๋ ํด๋์ค ์ด๋ฆ์ด ๊ฒน์น๊ธฐ๋ ํ์๋ค.
์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด SCSS๋ฅผ ์ฌ์ฉํด๋ณด๊ณ ์ ํ๋ค.
๐ SASS ( Syntactically Awesome StyleSheet )
์ฝ๋์ ์ฌํ์ฉ์ฑ์ ์ฌ๋ฆฌ๊ณ , ๊ฐ๋ ์ฑ์ ์ฌ๋ฆฌ๋ ๋ฑ CSS์์ ๋ณด์ด๋ ๋จ์ ์ ๋ณด์ํ๊ณ ,
๊ฐ๋ฐ์ ํจ์จ์ ์ฌ๋ฆฌ๊ธฐ ์ํ CSS ์ ์ฒ๋ฆฌ๊ธฐ ์ธ์ด
โ๏ธ CSS๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ฉฐ ์ถ๊ฐ ๊ธฐ๋ฅ ๋ํ ์๋ ํ์ฅํ ์คํฌ๋ฆฝํธ ์ธ์ด )
๐ CSS ์ ์ฒ๋ฆฌ๊ธฐ(Preprocessor) ์ธ์ด
Less, Sass(SCSS), Stylus ๊ฐ์ ์ ์ฒ๋ฆฌ๊ธฐ ์ธ์ด๋ ์ง์ ๋์์ํฌ ์ ์๋ค.
์ ์ฒ๋ฆฌ๊ธฐ ์ธ์ด๋ CSS ๋ฌธ๋ฒ๊ณผ ๊ต์ฅํ ์ ์ฌํ์ง๋ง ์ ํ์์ ์ค์ฒฉ(Nesting)์ด๋ ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ, ๋ค์ํ ๋จ์(Unit)์ ์ฐ์ฐ ๋ฑ… ํ์ค CSS ๋ณด๋ค ํจ์ฌ ๋ง์ ๊ธฐ๋ฅ์ ์ฌ์ฉํด์ ํธ๋ฆฌํ๊ฒ ์์ฑํ ์ ์๋ค.
๋ฐ๋ผ์ ์ฝ๋ ์์ฑ์ ๋๋ ์๊ฐ์ ์ค์ฌ์ฃผ๊ณ , ์ฝ๋๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋๋ฐ ๋์์ด ๋๋ค.
์น์ CSS๋ฐ์ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ์ ์ฒ๋ฆฌ๊ธฐ ์ธ์ด ๋ฌธ๋ฒ์ผ๋ก ์ฝ๋ฉํ๊ณ , CSS๋ก ์ปดํ์ผํด์ ์น์ผ๋ก ๋์์ํจ๋ค.
โถ Sass๋ CSS์ ํ์ฅ ์ ์ฒ๋ฆฌ๊ธฐ ์ธ์ด์ด๊ณ , CSS ์ฝ๋ ์์ฐ์ ์ํ ์ผ์ข ์ ๋๊ตฌ์ธ ์
๐ Sass VS SCSS
SCSS : Sass์ 3๋ฒ์ ์์ ๋ฑ์ฅํ ์ธ์ด๋ก, CSS ๊ตฌ๋ฌธ๊ณผ ์์ ํ ํธํ๋๋๋ก ์๋ก์ด ๊ตฌ๋ฌธ์ ๋์ ํด ๋ง๋ Sass์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ง์ํ๋ CSS์ ์์์งํฉ(Superset)
โ๏ธ CSS๋ CSS์ ๊ฑฐ์ ๊ฐ์ ๋ฌธ๋ฒ์ผ๋ก Sass ๊ธฐ๋ฅ์ ์ง์
1๏ธโฃ ํ์ฅ์
*.sass / *.scss
2๏ธโฃ ์ฌ์ฉ ๋ฐฉ๋ฒ
โถ SASS : ๋ค์ฌ ์ฐ๊ธฐ + ์ค ๋ฐ๊ฟ
โถ SCSS : ์ค๊ดํธ + ์ธ๋ฏธ์ฝ๋ก
3๏ธโฃ ๋จ์
์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ํ ๋๊ตฌ๊ฐ ํ์ํ๋ฉฐ ์ปดํ์ผ ์๊ฐ์ด ์์ ๋๋ฏ๋ก
์์ ํ๋ก์ ํธ๋ css , ํฐ ํ๋ก์ ํธ๋ scss๋ฅผ ์ถ์ฒํ๋ ๋ฏ ํ๋ค.
๐ SCSS ๊ธฐ๋ณธ ๋ฌธ๋ฒ/๊ธฐ๋ฅ
1๏ธโฃ ๋ณ์(Variable) ํ ๋น
์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ค์ ๋ณ์๋ก ์ง์ ํด์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ
2๏ธโฃ ์ค์ฒฉ(Nesting) ๊ตฌ๋ฌธ
์ค์ฒฉ๊ธฐ๋ฅ์ ํตํ ์ฌ์ด ๊ตฌ์ฑ , ๋์ ๊ฐ๋ ์ฑ
& (์์ ์ ํ์ ์ฐธ์กฐ)
3๏ธโฃ ๋ชจ๋ํ (Modularity)
@use๋ฅผ ์ฌ์ฉํ์ฌ ํ์ผ์ ๋ถํ ํ๊ณ ๋ชจ๋ํํ ์ ์๋ค.
as ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฆ์ ์ ํ ์๋ ์๋ค.
4๏ธโฃ ๋ฏน์ค์ธ (Mixins)
ํจ์์ฒ๋ผ defalut parameter๋ฅผ ์ง์ ํ ์ ์๊ณ parameter๋ฅผ ๋ฐ์์ ์์ฑ์ ๋ถ์ฌํ ์ ์๋ค. (์ฌ์ฌ์ฉ์ฑ)
5๏ธโฃ ํ์ฅ&์์ (Extend/Inheritance)
์ค๋ณต ์ฝ๋๋ฅผ ์ค์ด๊ณ , ํตํฉ ๊ด๋ฆฌ๊ฐ ๊ฐํธํด์ง๋ค.
%๋ ์๋ฌด ์ ๋ ํฐ์ ํฌํจ๋์ง ์์ง๋ง ๊ทธ ๋๋ฉด์ด ํ์ํ ๋ @extend ๋ก ๋๋ฉด์ ์์์ํจ๋ค.
6๏ธโฃ ์ฐ์ฐ์ (Operators)
css์ ๊ฒฝ์ฐ ์ฐ์ฐ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ calc ๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
scss๋ ๋ฐ๋ก ์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ค.
๐ข ์ฃผ์ : ๋๋๊ธฐ ์ฐ์ฐ์ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ค.
๐ฌ ๋ง์น๋ฉฐ
์ฒซ ๋ฒ์งธ vue ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ css๋ก๋ง ์ฝ๋๋ฅผ ์์ฑํ์๋ค.
ํ์ง๋ง ํ๋ฉด์ด ๋ง์์ง์๋ก ํด๋์ค ์ด๋ฆ ์ง๋ ๊ฒ๋ ์ด๋ ค์์ง๊ณ , ์ค๋ณต๋๋ ํด๋์ค ์ด๋ฆ์ด ์๊ธฐ๋ฉด์ ์ด๋ ค์์ ๋ง์ด ๊ฒช์๋ค.
ํ์ฌ๋ scss๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๋ฒ์งธ ํ๋ก์ ํธ๋ฅผ ์งํํ๊ณ ์๋ ์ค์ธ๋ฐ ํจ์ฌ ๊ฐ๋
์ฑ์ด ์ข๋ค.
์์ง์ ์ค์ฒฉ ๊ธฐ๋ฅ๋ง ์ฌ์ฉํด๋ณด์์ง๋ง, ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๋ ๋ค์ํ๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ณต๋ถํด๋ด์ผ๊ฒ ๋ค.