๐ SASS
โ ์? (์ฌ์ฉ ์ด์ )
โผ CSS ๋์ฉ ์ธ์ด๋ก, CSS์ ๋ฐ๋ณต ์ฝ๋ ๋ฌธ์ ๋ฑ์ ํด๊ฒฐํ๊ธฐ ์ํด์ ํ์ํ๋ค.
โผ CSS์ ์ถ๊ฐ์ ์ธ ๋ฌธ๋ฒ(์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ, ๋ณ์, ํจ์)์ ์ ๊ณตํ๋ค. ์ฆ, ํ๋ก๊ทธ๋๋ฐ์ค๋ฝ๊ฒ ์ฝ๋๋ฅผ ์งค ์ ์๊ฒ ๋์์ค๋ค.
โ SASS ์ฌ์ฉํ๊ธฐ
โผ Live Sass Compiler๋ฅผ ์ค์นํ๋ค.
โผ main.scss ํ์ผ์ ์์ฑํด์ ๊ฐ๋ฐํ๋ค.
โผ ์น๋ธ๋ผ์ฐ์ ๋ .css ํ์ผ๋ง ์ฝ์ ์ ์๊ณ , .scss๋ฅผ ์ฝ์ ์ ์๋ค. ๋ฐ๋ผ์, scss ํ์ผ์ css ํ์ผ๋ก ๋ณํํด์ ์ฌ์ฉํด์ผ ํ๋ค.
โผ Live Sass Compiler๊ฐ ์ค์น๋์ด ์์ผ๋ฉด VS Code ํ๋จ์ Watch Sass๋ฅผ ํด๋ฆญํ๋ฉด ๋์ผ ํด๋์ .main.css ํ์ผ์ด ์์ฑ๋๋ค.
โผ Html ํ์ผ์ .main.css ํ์ผ์ ์ฒจ๋ถํด์ ์ฌ์ฉํ๋ค.
โผ .main.css.map ํ์ผ์ ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ์ Styles ๋ถ๋ถ์ ํ์ผ๋ช ์ scss ํ์ผ๋ก ํ์ํด์ค๋ค.
โ SASS ์ฉ๋
$main_color: #2a4cb2;
.background {
background-color: $main_color;
}
.background2 {
background-color: $main_color;
}
.title {
font-size: $main_font_size + 2px;
}
โผ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํด์ผ ํ ๋, ๋ณ์ ๋ฌธ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
โผ $ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ณ์๋ฅผ ์์ฑํ ์ ์๋ค. ๋ํ ์ฌ์ฉํ ๋๋ ${๋ณ์๋ช }์ผ๋ก ์ฌ์ฉํ๋ค.
โผ ์ฌ์น์ฐ์ฐ์ ์ฌ์ฉํด์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค.
โ .scss / .sass ํ์ผ์ ์ฐจ์ด
.sass ํ์ผ์ indent๋ก ์ฝ๋ ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
.background
color : red
.scss ํ์ผ์ ๊ดํธ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ค.
.background {
background-color: red;
}
โ ๋ฌธ๋ฒ
// css
.main-bg h4 {
font-size: 14px;
}
// scss
.main-bg {
h4 {
font-size: 14px;
}
}
โผ ์ ์ฝ๋ 2๊ฐ๋ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
โผ nesting ๋ฌธ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
// css
.btn-green {
width: 100px;
height: 100px;
padding: 20px;
color: green;
}
.btn-red {
width: 100px;
height: 100px;
padding: 20px;
color: red;
}
.btn-blue {
width: 100px;
height: 100px;
padding: 20px;
color: blue;
}
โผ ๋นจ๊ฐ, ํ๋, ์ด๋ก ๋ฒํผ์ด ํ์ํ๋ฉด, ๊ฐ๊ฐ์ ์ฝ๋๋ก ์์ฑํด์ผ ํ๋ค.
// scss
.btn-green {
@extend %btn;
color: green;
}
.btn-red {
@extend %btn;
color: red;
}
.btn-blue {
@extend %btn;
color: blue;
}
%btn {
width: 100px;
height: 100px;
padding: 20px;
}
โผ @extend ๋ฌธ๋ฒ
โผ ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ style์ % ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ฌ ์์ Class๋ก ๋ง๋ค๊ณ , @extend %{ํด๋์ค๋ช }์ ํ์ฉํ์ฌ ์ค๋ณต style์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
โผ %๊ธฐํธ ๋์ .์ ์ฌ์ฉํด๋ ์ ์์ ์ผ๋ก ๋์ํ์ง๋ง, % ๊ธฐํธ๋ฅผ ์ฌ์ฉํด์ผ, ๋จ๋ ์ผ๋ก ์ปดํ์ผ ๋์ง ์๋๋ค.
@mixin btn_style($padding_size, $option, $color) {
width: 100px;
height: 100px;
padding: $padding_size;
#{$option}: $color;
}
.btn-green2 {
@include btn_style(20px, color, green);
}
.btn-red2 {
@include btn_style(10px, color, red);
}
.btn-blue2 {
@include btn_style(15px, color, blue);
}
โผ @mixin ๋ฌธ๋ฒ
โผ ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒ์ @mixin์ผ๋ก ์ ์ํ๊ณ @include๋ฅผ ์ฌ์ฉํด์ ๋ฃ์ ์ ์๋ค.
โผ $ํ๋ฆฌ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ๋ฉด, ๊ฐ์ ๊ฐ๋ณ์ ์ผ๋ก ์ค์ ํ ์ ์๋ค.
โผ ๊ธ์ ์ค๊ฐ์ $๋ณ์๋ $ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฃ์ ๋๋ #{$๋ณ์๋ช }์ ์ฌ์ฉํ๋ค.
// main.scss
@use "main2.sass";
.background {
background-color: main2.$main2_color;
}
// main2.sass
body
margin: 0
div
box-sizing: border-box
$main2_color: white
โผ @use ๋ฌธ๋ฒ
โผ ๋ค๋ฅธ ํ์ผ์ ๋ด์ฉ์ ๊ฐ์ ธ์ค๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
โผ main2.sass๋ฅผ ๋จ๋ ์ผ๋ก ์ปดํ์ผํ๊ธฐ ์ซ์ ๊ฒฝ์ฐ, _main2.sass๋ก ํ์ผ๋ช ์ ๋ณ๊ฒฝํ๋ฉด ์ปดํ์ผ ๋์ง ์๋๋ค.
โผ main2 ๋ด์ ๋ณ์๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ผ๋ฉด, main2.${๋ณ์๋ช }์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
'Web > Html&Css' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Html&CSS ์ ์ฉํ ๋ฐฉ๋ฒ๋ค (0) | 2023.04.21 |
---|---|
๋ฐ์ํ ๋ ์ด์์ (0) | 2023.04.01 |
Html&CSS ์ฌ์ฉํ๊ธฐ (0) | 2023.03.31 |