Sass/Scss: CSS์ ํ์ ์ ์ธ ํ์ฅ
1. ์๊ฐ
1.1 Sass/Scss๋?
Sass(์ค์ ์ ์ธ ํ์ผ ํ์ฅ์๋ .scss
) ๋ฐ Scss(.scss
์ .sass
๋ ๊ฐ์ง ํ์ฅ์ ๋ชจ๋ ์ฌ์ฉ ๊ฐ๋ฅ)๋ CSS๋ฅผ ํฅ์ํ๊ณ ๋ณด์ํ๊ธฐ ์ํ ํ์ฅ ์ธ์ด์
๋๋ค. ๋ณ์, ์ค์ฒฉ ๊ท์น, ๋ฏน์ค์ธ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ณ ๊ฐ๋
์ฑ์ ๊ฐ์ ํฉ๋๋ค.
1.2 ๋ฐฐ๊ฒฝ
Sass/Scss๋ CSS์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ๋ง๋ค์ด์ก์ต๋๋ค. ๊ธฐ์กด์ CSS๋ ๋ณ์, ์ค์ฒฉ, ํจ์ ๋ฑ์ ๋ถ์กฑํ ๊ธฐ๋ฅ์ผ๋ก ์ธํด ์ฝ๋์ ๋ณต์ก์ฑ์ด ์ฆ๊ฐํ๊ณ ์ ์ง๋ณด์๊ฐ ์ด๋ ค์ ์ต๋๋ค. Sass/Scss๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ ๊ฐ๋ฐ๋์์ต๋๋ค.
2. Sass/Scss์ ํน์ง
2.1 ๋ณ์
$primary-color: #3498db;
body {
background-color: $primary-color;
}
2.2 ์ค์ฒฉ ๊ท์น
nav {
ul {
margin: 0;
padding: 0;
list-style: none;
}
li { display: inline-block; }
}
2.3 ๋ฏน์ค์ธ
@mixin border-radius($radius) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
border-radius: $radius;
}
.box { @include border-radius(10px); }
3. Sass/Scss์ ํ์ฉ์ฑ
3.1 ์์ ์ฝ๋
$primary-color: #3498db;
body {
background-color: $primary-color;
font-family: 'Arial', sans-serif;
header {
h1 {
color: darken($primary-color, 10%);
}
}
}
3.2 ํ์ฉ ๋ฐฉ์
- ๋ณ์ ํ์ฉ: ์์์ด๋ ๊ธ๊ผด ๋ฑ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ์ ๋ณ์๋ก ์ ์ธํ์ฌ ํต์ผ์ฑ์ ์ ์งํ๊ณ ์์ ์ด ์ฉ์ดํ๊ฒ ํฉ๋๋ค.
- ์ค์ฒฉ ๊ท์น: HTML ๊ตฌ์กฐ์ ์ ์ฌํ๊ฒ ์ค์ฒฉํ์ฌ ๊ฐ๋ ์ฑ์ ๋์ด๊ณ ์ฝ๋์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ช ํํ ํฉ๋๋ค.
- ๋ฏน์ค์ธ ํ์ฉ: ์์ฃผ ์ฌ์ฉ๋๋ ์ฝ๋ ๋ธ๋ก์ ๋ฏธ๋ฆฌ ์ ์ํ๊ณ ํ์ํ ๊ณณ์์ ์ฌ์ฌ์ฉํจ์ผ๋ก์จ ์ฝ๋ ์์ ์ค์ด๊ณ ์ ์ง๋ณด์์ฑ์ ํฅ์์ํต๋๋ค.
4. Sass/Scss์ ์ฅ๋จ์
4.1 ์ฅ์
- ๊ฐ๋ ์ฑ ํฅ์: ์ค์ฒฉ ๊ตฌ์กฐ์ ๋ณ์ ์ฌ์ฉ์ผ๋ก ๊ฐ๋ ์ฑ์ด ํฅ์๋์ด ์ฝ๋ ์์ฑ์ด ์ฉ์ดํฉ๋๋ค.
- ์ ์ง๋ณด์์ฑ ์ฆ๊ฐ: ๋ชจ๋ํ๋ ์ฝ๋๋ก ์ธํด ์ ์ง๋ณด์๊ฐ ์ฉ์ดํด์ง๋๋ค.
- ํจ์จ์ ์ธ ์์ : ๋ฏน์ค์ธ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ผ๋ก ๋ฐ๋ณต ์์ ์ ๊ฐํธํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
4.2 ๋จ์
- ํ์ต ๊ณก์ : CSS์ ๋นํด ํ์ต ๊ณก์ ์ด ์กด์ฌํ๋ฉฐ, ์ด๊ธฐ์๋ ์ต์ํด์ง๋ ๋ฐ ์๊ฐ์ด ์์๋ ์ ์์ต๋๋ค.
5. ๋น๋ ์ค์ ๋ฐ ํ๋ฌ๊ทธ์ธ
Sass/Scss๋ ๋ธ๋ผ์ฐ์ ์์ ์ง์ ํด์๋์ง ์์ผ๋ฏ๋ก, ๋น๋ ์์ CSS๋ก ๋ณํ๋์ด์ผ ํฉ๋๋ค. ๋ํ์ ์ธ ๋น๋ ํด๋ก๋ **Node.js ๊ธฐ๋ฐ์ node-sass
, sass-loader
๋ฑ์ด ์์ต๋๋ค.
npm install node-sass --save-dev
์์ ๊ฐ์ด ํจํค์ง๋ฅผ ์ค์นํ๊ณ , ํ๋ก์ ํธ์ ๋ง๊ฒ ๋น๋ ๋๊ตฌ์ ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐํ์ฌ ์ค์ ํฉ๋๋ค.
6. ๊ฒฐ๋ก
Sass/Scss๋ CSS์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ณ ์ ๋ง๋ค์ด์ง ํ์ฅ ์ธ์ด๋ก, ๋ณ์, ์ค์ฒฉ ๊ท์น, ๋ฏน์ค์ธ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ ํจ์จ์ ์ธ ์คํ์ผ๋ง์ ๊ฐ๋ฅ์ผ ํฉ๋๋ค. ์ด๊ธฐ ํ์ต ๋น์ฉ์ ๋ค์ด๋ ๋งํผ ํ๋ก์ ํธ ๊ท๋ชจ๊ฐ ์ปค์ง์๋ก ๊ทธ ํจ๊ณผ๋ฅผ ๋ฐํํ๋ฉฐ, ์ ์ง๋ณด์์ฑ๊ณผ ๊ฐ๋ ์ฑ์ ๋์ฌ ์์ฐ์ฑ์ ํฅ์์ํฌ ์ ์์ต๋๋ค
'IT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Argocd: ํ๋์ ์ธ CI/CD๋ฅผ ์ํ ํจ๊ณผ์ ์ธ ๋ฐฐํฌ ๋๊ตฌ (0) | 2024.02.22 |
---|---|
SaaS(Software as a Service): ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ์ ํ์ ์ ์ธ ์๋น์ค ์ ๊ณต ๋ชจ๋ธ (0) | 2024.02.21 |
TypeScript: ์๋ฐ์คํฌ๋ฆฝํธ์ ํ๋์ ์ธ ํ์ฅ (0) | 2024.02.21 |
Babel: ์๋ฐ์คํฌ๋ฆฝํธ ํธ๋์คํ์ผ๋ฌ์ ์ธ๊ณ (0) | 2024.02.21 |
Rollup vs. Webpack: ๋ชจ๋ ๋ฒ๋ค๋ฌ ๋น๊ต (0) | 2024.02.21 |
๋๊ธ