๋ฐ์ํ
1๏ธโฃ @mixin ๐
- Sass์์ @mixin์ ์ฌ์ฉํ๋ฉด ์คํ์ผ์ํธ ์ ์ฒด์์ ์ฌ์ฌ์ฉํ ์ ์๋ ์คํ์ผ ๊ทธ๋ฃน์ ์ ์ํ ์ ์๋ค.
- @mixin์ง์๋ฌธ์ ํตํด mixin์ ์์ฑํ๊ณ ํ์ํ ๊ฒฝ์ฐ @include๊ธฐ๋ฅ์ ํตํด ๋ถ๋ฌ์์ ๊ฐ์ ๋ฃ์ด ์ฌ์ฌ์ฉํ๋ ๋ฐฉ์.
- @mixin์ ๋ ์ ์ฐํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด์ Arguments ๊ฐ์ ์ ๋ฌํ ์๋ ์๋ค.
( $key : value ) ํํ๋ก ์์ฑํ๋ฉด arguments๊ฐ ๊ณต๋์ผ ๋ ๊ธฐ๋ณธ๊ฐ๋ ์ค์ ํ ์ ์๋ค. (๊ธฐ๋ณธ ๊ฐ์ ์๋ต ๊ฐ๋ฅ) - ์๋ํ ๋์ด์๋ _mixin.scss ๊ทธ๋๋ก ๊ฐ์ ธ์์ ์ฌ์ฉํด ๋ณด๋ ๊ฒ์ ์ถ์ฒ.
์ค์ ํ์ ์์๋ _mixin์ ์๋ก ์์ฑํด์ ์ฌ์ฉํ์ง ์๊ณ ๊ณ ์ ๋์ด ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. - โ ๏ธ ๋ฐ๋ณตํ๋ ๋ชจ๋ ์ฝ๋๋ฅผ ํ๋์ @mixin์ ๋ชฐ์๋ฃ์ด์ ์ฌ์ฉํ๋ ๊ฑด ๊ถ์ฅํ์ง ์์!
์๋ก ์ฐ๊ด ์๋ ์คํ์ผ ์์ฑ๋ผ๋ฆฌ ๋ฌถ์ผ๋ฉด ์ข ๋ ์ฌ์ฉ์ฑ์ด ๋์ @mixin์ ๋ง๋ค ์ ์๋ค.
/* @mixin์ ํ์ฉํด ๋ฒํผ ์คํ์ผ ์ ์ด */
@mixin button($color:#b4d455) {
background-color: $color;
border-radius: 5px;
padding: .25em .5em;
&:hover {
cursor: pointer;
background-color: $color;
border-color: $color;
}
}
.button-a {
@include button;
}
.button-b {
@include button(#c0ffee);
}
2๏ธโฃ @if
- @if (์กฐ๊ฑด) { ์กฐ๊ฑด์ด ์ฐธ์ผ ๋ ์คํ๋ ๊ตฌ๋ฌธ } @else { if๋ฌธ์ ์กฐ๊ฑด์ด ๊ฑฐ์ง์ผ ๋ ์คํ๋ ๊ตฌ๋ฌธ } ์ ๊ฐ์ง๋ค.
- ๋น์ทํ ๊ตฌ์กฐ์ง๋ง ํน์ ์กฐ๊ฑด์ ํด๋นํ ๋๋ง ์คํ์ผ์ ์ ์ดํด์ผ ํ ๊ฒฝ์ฐ ์ฌ์ฉ.
/* @if์ @mixin์ ํ์ฉํด ๋ฏธ๋์ด์ฟผ๋ฆฌ ์คํ์ผ ์ ์ด */
@mixin media($size) {
@if $size =='mobile' {
@media screen and (max-width: 768px) {
@content;
}
}
@else if $size =='tablet' {
@media screen and (min-width: 769px) and (max-width: 1024px) {
@content;
}
}
@else if $size =='desktop' {
@media screen and (min-width: 1025px) {
@content;
}
}
}
3๏ธโฃ @for
- @for๋ฌธ์ from(์์) through(๋)๋ฅผ ์ ๋ ฅํ๋ฉด ํด๋น๋๋ ๋ฒ์์์ ์ซ์๋ฅผ ๋ณ์์ ํ ๋นํด์ ๋ฐ๋ณต์ ์คํํ๋ค.
- ๋ณ์๋ช ์ ์์ฑ์์ ์ฌ์ฉํ ๋๋ #{$๋ณ์๋ช } ํํ๋ก ์ฌ์ฉ.
/* @for ์ ๊ตฌ์กฐ */
for ($๋ณ์) from (๋ฐ๋ณต์ ์์ํ ์ซ์) through(๋ฐ๋ณต์ ๋๋ผ ์ซ์){
// ๋ฐ๋ณตํ ๋ด์ฉ
}
/* @for์ ์ด์ฉํด nth-์ ํ์์๊ฒ ๊ฐ๊ฐ์ image๋ฅผ ๋ฐฐ๊ฒฝ์ ๋ฃ์ด์ค๋ค. */
@for $i from 1 through 5 {
.photo-box:nth-child(#{$i}) {
background-image: url("../assets/images#{$i}.png");
}
}
4๏ธโฃ @Function
- ์ค๋ฌด์์ scss ํจ์๊ฐ ์์ฃผ ์ฌ์ฉ๋์ง๋ ์์ง๋ง ์คํ์ผ ์ํธ์์ ์ฌ์ฌ์ฉํ ์ ์๋ ๋ณต์กํ ์์ ์ ์ํํ๊ณ return ํ๊ธฐ ์ํด ์ฌ์ฉ.
/* @function์ ํ์ฉํด x๊ฐ number์ธ์ง ํ์ธ ํ ์๋์ผ๋ก 'px'๋จ์๋ฅผ ๋ถ์ฌ์ฃผ๊ธฐ. */
@function unitCheck($x) {
// ๋จ์์ฒดํฌ
@if(type-of($x)==number) {
@if(unitless($x)) {
@return $x+px;
}
}
@return $x;
}
.test {
font-size: unitCheck(100);
}
๐๐ปโ๏ธ ๊ฒฐ๋ก
- Sass๋ฅผ ์ฌ์ฉํ์ง ์๋ ํ์ฌ๋ ์๋ค๊ณ ํ์ง๋ง ๋ด๊ฐ ๋ณธ ํ์ฌ๋ ๋๋ถ๋ถ Sass๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๋ค.
๋ฌผ๋ก tailwind๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ CSS๋ณ์๋ฅผ ํตํด ์ ์ฒ๋ฆฌ๋ฅผ ํ๋ ํ์ฌ๋ ์์ ๊ฒ์ด๋ค!
๊ทธ๋๋ Sass ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ด ์ด๋ ต์ง ์์ผ๋ ์์งํ๊ณ ์๋ ๊ฒ ์ข๋ค๊ณ ์๊ฐํ๋ค. :) - Sass์์ @mixin์ ๊ฐ์ฅ ์ค์ํ ๊ธฐ๋ฅ์ผ๋ก, ์คํ์ผ์ํธ ์ ์ฒด์์ ์ฌ์ฌ์ฉํ ์ ์๋ ์คํ์ผ ๊ทธ๋ฃน์ ์ ์ํ ์ ์๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ์ ๋น์ทํ ๋ฌธ๋ฒ์ผ๋ก @for๋ฌธ์ ํ์ฉํด์ ๋ฐ๋ณต๋ฌธ์ ์คํํ ์ ์๊ณ , @if๋ฌธ์ ํ์ฉํด์ ์กฐ๊ฑด๋ฌธ์ ์คํํ ์ ์๋ค.
- ํด๋น ๊ฒ์๋ฌผ์ Sass์ ๋ํ ๊ธฐ๋ณธ๊ธฐ๋ฅผ ์ค๋ช
ํ๋ ๋๋ฒ์งธ ๋ฐํ๋ฌผ์ผ๋ก
Sass์ ๊ธฐ๋ฅ์ ๋ํด ๋ ์๊ณ ์ถ์ผ์๋ค๋ฉด ์๋ ๋งํฌ์์ ์ด์ ๋ด์ฉ์ ํ์ธํ ์ ์์ต๋๋ค!
๋ฐ์ํ