[SASS] SASS 연산(Operations)

SASS는 기본적인 연산 기능을 지원한다. 레이아웃 작업시 상황에 맞게 크기를 계산하거나 정해진 값을 나눠서 작성할 경우 유용하다. 아래는 SASS에서 사용 가능한 연산자 종류이다.

산술 연산자

종류 설명 주의사항
+ 더하기  
- 빼기  
* 곱하기 하나 이상의 값이 반드시 숫자(Number)
/ 나누기 오른쪽 값이 반드시 숫자(Number)
% 나머지  

비교 연산자

종류 설명
== 동등
!= 부등
< 대소 / 보다 작은
> 대소 / 보다 큰
<= 대소 및 동등 / 보다 작거나 같은
>= 대소 및 동등 / 보다 크거나 같은

논리 연산자

종류 설명
and 그리고
or 또는
not 부정(반대)

숫자

일반적으로 절대값을 나타내는 px단위로 연산을 하지만, 상대적 단위(%, em, vw 등)의 연산의 경우 calc()로 연산 해야 한다.

width: 50% - 20px;  // 단위 모순 에러(Incompatible units error)
width: calc(50% - 20px);  // 연산 가능

나누기 연산의 주의사항 CSS는 속성 값의 숫자를 분리하는 방법으로 /를 허용하기 때문에 /가 나누기 연산으로 사용되지 않을 수 있다. 아래 예제를 보면 나누기 연산자만 연산 되지 않고 그대로 컴파일된다.

SCSS

div {
    width: 20px + 20px;  // 더하기
    height: 40px - 10px;  // 빼기
    font-size: 10px * 2;  // 곱하기
    margin: 30px / 2;  // 나누기
}

Compiled to

div {
  width: 40px;
  height: 30px;
  font-size: 20px;
  margin: 30px/2; // Error
}

따라서 /를 나누기 연산 기능으로 사용하려면 다음과 같은 조건을 충족해야 한다.

  • 값 또는 그 일부가 변수에 저장되거나 함수에 의해 반환되는 경우
  • 값이 ()로 묶여있는 경우
  • 값이 다른 산술 표현식의 일부로 사용되는 경우

SCSS

div {
    $x: 100px;
    width: $x / 2; // 변수에 저장된 값을 나누기
    height: (100px / 2); // 괄호로 묶여있는 경우
    font-size: 10px + 12px / 3; // 더하기 연산자와 같이 사용
}

Compiled to

div {
  width: 50px;
  height: 50px;
  font-size: 14px;
}

문자

문자 연산에는 +가 사용된다. 문자 연산의 결과는 첫번째 피연산자를 기준으로 한다. 첫번째 피연산자에 따옴표가 붙어있다면 연산 결과를 따옴표로 묶는다. 반대로 첫번째 피연산자에 따옴표가 붙어있지 않으면 연산 결과도 따옴표를 처리하지 않는다.

SCSS

div::after {
    content: "hello" + world;
}
div::after {
    content: hello + "world";
}

Compiled to

div::after {
  content: "helloworld";
}

div::after {
  content: helloworld;
}

색상

색상도 연산이 가능하다.

논리

SASS의 @if조건문에서 사용되는 논리 연삭에는 그리고, 또는, 부정이 있다. 자바스크립트의 &&, ||, !와 같은 기능이라 보면 된다.

SCSS

$width: 90px;
div {
  @if not ($width > 100px) {
    height: 300px;
  }
}

Compiled to

div {
  height: 300px;
}

References

Sass(SCSS) 완전 정복!
Sass 기초와 활용
[사스(Sass)] 2. Sass 사용법
CSS 전처리기
Sass는 SCSS로 쓰세요
[사스(Sass)] Sass 기본 사용법 (컴파일 및 명령어)

updated_at 10-02-2020