업데이트:

SASS 문법

@at-root

ul{
  @at-root [class name] {
    여기 정의된 css ul 밖에 정의됨
  }
}
/* 예) */
ul{
  li{font-size:1.4rem;}
  @at-root .layer li {font-size:1.6rem;}
}

/* CSS 출력 */
ul li{font-size:1.4rem;}
.layer li{font-size:1.6rem;}

#{$변수명} (변수 문자 보간)

$left:left;

.test{
  /* {}괄호 안에 변수값은 문자열로 인식함. 숫자의 경우에도 문자열로 처리 */
  border-#{$left}:1px solid red;
}

산술식에서 ‘/’ 연산을 정상으로 사용하는 법

  • 나눌 대상을 변수에 담아 나눈다
  • 괄호를 이용하여 연산을 수행
  • 기타 다른 연산과 함께 혼용
$width1 : 100px;
width : $width1 / 2;
height: (100% / 4);
padding-top: 50px + 20px / 2;

논리연산

인라인 if

$width: 300px;
.box{border:if($width > 500, "200px", $width);}

@if [and / or / not]

@if(조건){  // ()를 생략가능
}

@if(조건){
}@else{
}

@if(조건){
}@else if(조건){
}@else{
}

/* and | or | not 연산 */
$width1 : 150px;
@if ($width1 < 100 and $width1 > 300){
  height : 100px;
} @else {
  height : 200px;
}

@for

  • @for $변수 from 시작 through 종료{}, through는 종료포함
  • @for $변수 from 시작 to 종료{}, to는 종료직전
$colors : (red, blue, green, yellow);

/* $colro3 까지 출력 */
@for $num from 1 through 3 {
	.test li:nth-child(#{$num}){
		background-color:nth($colors, $num);
	}
}

/* $colro2 까지 출력 */
@for $num from 1 to 3 {
	.test li:nth-child(#{$num}){
		background-color:nth($colors, $num);
	}
}

/* $colors 길이만큼 반복 */
@for $num from 1 through length($colors) {
	.test li:nth-child(#{$num}){
		background-color:nth($colors, $num);
	}
}

@each

  • @each는 List와 Map 데이터를 반복할 때 사용
    $colors : (red, blue, green, yellow);
    .test {
      @each $color in $colors{
          $i : index($colors, $color);
          li:nth-child(#{$i}){
              background-color:$color;
          }
      }
    }
    
  • Map 사용법
    $icon-arrow: (up: up01, down:down01, left:left01, right:right01);
    .test{
      @each $key, $icon in $icon-arrow{
          li.icon.#{$key}{
              background-image:url("../img/icon/arrow_#{$icon}.png");
          }
      }
    }
    

mixin

  • 재사용 할 css 선언 그룹을 정의
  • 선언 : @mixin, 사용 : @include
    @mixin bgcenter($img){
    background:url('../img/bg/#{$img}.png') no-repeat 50% 50%;
    }
    .bg1{@include(vs1);}
    .bg2{@include(vs2);}
    

function 함수

  • 인수가 없어도 괄호 필요 ```scss @function 함수이름($매개변수) { @return 값 }

/* 예) */ $max-width: 980px; @function columns($number: 1, $columns: 12) { @return $max-width * ($number / $columns) } .box1 { width: columns(8); } ```

색상(RGB / HSL / Opacity) 함수

  • mix($color1, $color2) : 두 개의 색을 섞는다.
  • lighten($color, $amount) : 더 밝은색을 만든다.
  • darken($color, $amount) : 더 어두운색을 만든다.
  • saturate($color, $amount) : 색상의 채도를 올린다.
  • desaturate($color, $amount) : 색상의 채도를 낮춘다.
  • grayscale($color) : 색상을 회색으로 변환한다.
  • invert($color) : 색상을 반전시킨다.
  • rgba($color, $alpha) : 색상의 투명도를 변경한다.
  • opacify($color, $amount) / fade-in($color, $amount) : 색상을 더 불투명하게 만든다.
  • transparentize($color, $amount) / fade-out($color, $amount) : 색상을 더 투명하게 만든다.

문자(String) 함수

  • unquote($string) : 문자에서 따옴표를 제거한다.
  • quote($string) : 문자에 따옴표를 추가한다.
  • str-insert($string, $insert, $index) : 문자의 index번째에 특정 문자를 삽입한다.
  • str-index($string, $substring) : 문자에서 특정 문자의 첫 index를 반환한다.
  • str-slice($string, $start-at, [$end-at]) : 문자에서 특정 문자(몇 번째 글자부터 몇 번째 글자까지)를 추출한다.
  • = 세번째 인수를 기재하지 않으면, 마지막 순서까지 출력
  • to-upper-case($string) : 문자를 대문자를 변환한다.
  • to-lower-case($string) : 문자를 소문자로 변환한다.

숫자(Number) 함수

  • percentage($number) : 숫자(단위 무시)를 백분율로 변환한다.
  • round($number) : 정수로 반올림한다.
  • ceil($number) : 정수로 올림한다.
  • floor($number) : 정수로 내림(버림)한다.
  • abs($number) : 숫자의 절대 값을 반환한다.
  • min($numbers…) : 숫자 중 최소 값을 찾는다.
  • max($numbers…) : 숫자 중 최대 값을 찾는다.
  • random() : 0 부터 1 사이의 난수를 반환한다.

List 함수

모든 List 내장 함수는 기존 List 데이터를 갱신하지 않고 새 List 데이터를 반환한다. 모든 List 내장 함수는 Map 데이터에서도 사용할 수 있다.

  • length($list) : List의 개수를 반환한다.
  • nth($list, $n) : List에서 n번째 값을 반환한다.
  • set-nth($list, $n, $value) : List에서 n번째 값을 다른 값으로 변경한다.
  • join($list1, $list2, [$separator]) : 두 개의 List를 하나로 결합한다.
  • zip($lists…) : 여러 List들을 하나의 다차원 List로 결합한다.
  • index($list, $value) : List에서 특정 값의 index를 반환한다.

Map 함수

모든 Map 내장 함수는 기존 Map 데이터를 갱신하지 않고 새 Map 데이터를 반환한다.

  • map-get($map, $key) : Map에서 특정 key의 value를 반환한다.
  • map-merge($map1, $map2) : 두 개의 Map을 병합하여 새로운 Map를 만든다.
  • map-keys($map) : Map에서 모든 key를 List로 반환한다.
  • map-values($map) : Map에서 모든 value를 List로 반환한다.

관리(Introspection) 함수

  • variable-exists(name) : 변수가 현재 범위에 존재하는지 여부를 반환한다. (인수는 $없이 변수의 이름만 사용한다.)
  • unit($number) : 숫자의 단위를 반환한다.
  • unitless($number) : 숫자에 단위가 있는지 여부를 반환한다.
  • comparable($number1, $number2) : 두 개의 숫자가 연산 가능한지 여부를 반환한다.

주의사항

  • while 조건문은 무한루프에 빠질 가능성이 있어 비추천

댓글남기기