[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 기본 사용법 (컴파일 및 명령어)