Sass(SCSS) 응용하기

- 5 mins

Sass(SCSS) 응용하기

Sass(SCSS)

조건문에 대해서

@if, @else if, @else

JS의 if ~ else 문과 유사한 조건문을 처리할 수 있습니다.

@mixin tag-type($val) {
	@if $val == new {
		color: red;
	} @else if $val == sale {
		color: yellow;
	} @else if $val == event {
		color: green;
	} @else {
		color: black;
	}
}

.tag {
  @include tag-type(new)
}

Compile​

.tag {
  color: red;
}

@while, @for, @each

@while 반복문

조건값까지만 반복

$i : 10;
@while $i > 0 {
	.box-#{$i} { width : 2em * $i; }
	$i : $i - 3;
}

Compile

.box-10 {
  width: 20em;
}
.box-7 {
  width: 14em;
}
.box-4 {
  width: 8em;
}
.box-1 {
  width: 2em;
}

@for 반복문

to 키워드는 전(미만)까지를 반복하며, through 키워드는 끝(이하)까지 반복한다.

@for $i from 1 through 5 {
    .ico-car#{$i} { background-position:0 -10px * $i + 10px; }
}

Compile

.ico-car1 {
  background-position: 0 0px;
}
.ico-car2 {
  background-position: 0 -10px;
}
.ico-car3 {
  background-position: 0 -20px;
}
.ico-car4 {
  background-position: 0 -30px;
}
.ico-car5 {
  background-position: 0 -40px;
}

@each 배열을 이용해 맵핑하기

List 반복(데이터를 직접 나열)

@each $temp-img in cheese, potato, pepperoni {
	.pizza-#{$temp-img}{
		background-image:url('/img/#{$temp-img}.png')
	}
}

Compile

.pizza-cheese {
  background-image: url("/img/cheese.png");
}

.pizza-potato {
  background-image: url("/img/potato.png");
}

.pizza-pepperoni {
  background-image: url("/img/pepperoni.png");
}

Map

$CBrand:red;
$CBrand2:blue;

$state-btn: (
    wish: (color: $CBrand),
    buy: (color: $CBrand2),
    soldout: (color: yellow),
);

@each $key, $value  in $state-btn {
    .ico-#{$key} {
        background-color: map-get($value, color);
    }
}

Compile

.ico-wish {
  background-color: red;
}
.ico-buy {
  background-color: blue;
}
.ico-soldout {
  background-color: yellow;
}

내장함수에 대해서

img

Compile

.box.box1{background:#ff6c00;}
.box.box2{background:#f66;}
.box.box3{background:#900;}
.box.box5{background:#e61a1a;}
.box.box6{background:gray;}
.box.box7{background:#0FF;}
.box.box8{background:rgba(255,0,0,0.2);}
.box.box4,.box.box9,.box.box10{background:red;}
.box.box11,.box.box12{background:rgba(255,0,0,0.5);}
mix(색1, 색2) 색1과 색2를 섞은 색으로 나타납니다.
lighten(색, %) 색1을 %만큼 밝게 만들어줍니다.
darken(색, %) 색을 %만큼 어둡게 만들어줍니다.
saturate(색, %) 색상의 채도를 % 만큼 올립니다.
desaturate(색, %) 색상의 채도를 % 만큼 올립니다.
grayscale(색) 색상의 회색으로 변환합니다
invert(색) 색을 반전시킵니다.
rgba(색, 알파값) 알파값(0-1) 투명도 지정
opacify(색,%) , fade-in(색,%) 색상을 더 불투명하게 만듭니다.
transparentize(색,%), fade-out(색,%) 색상을 더 투명하게 만든다.
//숫자값을 %로 변환
percentage(0.2)          => 20%
percentage(100px / 50px) => 200%

//소숫점 이하 반올림
round(10.4px) => 10px
round(10.6px) => 11px

//소숫점 이하 올림
ceil(10.4px) => 11px
ceil(10.6px) => 11px

//소숫점 이하 절사
floor(10.4px) => 10px
floor(10.6px) => 10px

//절대값 취득
abs(10px) => 10px
abs(-10px) => 10px

참고

https://code-pervert.tistory.com/16

https://heropy.blog/2018/01/31/sass/

https://sass-guidelin.es/ko/#section-56

rss facebook twitter github gitlab youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora