(1) 연산(Operations)
Sass는 기본적인 연산 기능을 지원하므로 default value를 기준으로 계산할 시 유용하게 사용할 수 있습니다.
산술 연산자
연산자 | 설명 | 참고 |
+ | 더하기 | |
- | 빼기 | |
* | 곱하기 | 하나 이상의 값이 반드시 Number |
/ | 나누기 | 오른쪽 값은 반드시 Number |
% | 나머지 |
비교 연산자
연산자 | 설명 |
== | 동등 |
!= | 부등 |
< | 보다 작다 |
> | 보다 크다 |
<= | 보다 작거나 같다 |
>= | 보다 크거나 같다 |
논리 연산자
연산자 | 설명 |
and | 그리고 |
or | 또는 |
not | 부정 |
(2) 숫자 (Number)
① 상대적 단위 연산
보통은 px 단위를 사용하여 연산하지만, 상대적 단위의 연산일 경우 CSS의 calc()를 사용하여 연산합니다.
width: 100% - 20px; //error 단위 모순
width: calc(100% - 20px); //이렇게 사용해야 함.
②주의사항
CSS에서는 속성값 분리를 위해 /를 사용하기도 하므로, 나누기 연산이 되지 않고 그대로 Compile되는 경우가 있음.
/를 나누기 연산 기능으로 사용하기 위해서는 다음과 같은 조건을 충족해야 함.
- 값 또는 그 일부가 변수에 저장되거나 함수에 의해 반환될 때
- 값이 ()로 묶여있을 때
- 값이 다른 산술 표현식의 일부로 사용될 때
if (SCSS) {
div {
$x: 100px;
width: $x / 2; //변수에 저장된 값을 나누기
height: (100px / 2); //괄호로 묶은 경우
font-size: 10px + 15px / 3; //더하기와 함께 사용
}
} else if (SCSS to CSS) {
div {
width: 50px;
height: 50px;
font-size: 15px;
}
}
(3) 문자 (String)
문자 연산에는 + 를 사용할 수 있습니다.
첫 번째의 피연산자를 기준으로 하므로 만약 첫 번째의 피연산자에 따옴표가 붙어있다면 결과도 따옴표로 묶이고,
아니라면 결과 또한 따옴표가 없습니다.
if (SCSS) {
div::after {
content: "Hello " + World;
flex-flow: row + "-reverse" + " " + wrap
}
} else if (SCSS to CSS) {
div::after {
content: "Hello World";
flex-flow: row-reverse wrap
}
}
(4) 색상 (Colors)
if (SCSS) {
div {
color: #123456 + #345678;
// R: 12 + 34 = 46
// G: 34 + 56 = 8a
// B: 56 + 78 = ce
background: rgba(50, 100, 150, .5) + rgba(10, 20, 30, .5);
// R: 50 + 10 = 60
// G: 100 + 20 = 120
// B: 150 + 30 = 180
// A: Alpha channels는 같아야 한다.
}
} else if (SCSS to CSS) {
div {
color: #468ace;
background: rgba(60, 120, 180, 0.5);
}
}
RGBA에선 Alpha값이 연산되지 않으므로 서로 동일해야 rgb의 연산이 가능합니다.
만약, Alpha 값 또한 연산하길 원한다면 opacify(), transparentize() 색상 함수를 사용하여 바꿔주어야 합니다.
if (SCSS) {
$color: rgba(0, 0, 0, .5);
div {
color: opacify($color, .3); // 30% 더 불투명하게 = .8
background-color: transparentize($color, .3); // 20% 더 투명하게 = .2
}
} else if (SCSS to CSS) {
div {
color: rgba(0, 0, 0, 0.8);
background-color: rgba(0, 0, 0, 0.2);
}
}
(5) 논리 (Boolean)
@if 조건문을 사용한 논리 연산, and, or, not을 사용하여 javascript의 &&, ||, ! 과 같은 기능을 합니다.
if (SCSS) {
$width: 100px;
div {
@if not ($width > 150px) {
height: 500px;
}
}
} else if (SCSS to CSS) {
div {
height: 500px;
}
}
'Programming > CSS' 카테고리의 다른 글
[CSS] 텍스트 드래그 방지 (0) | 2022.05.18 |
---|---|
[Sass/SCSS] 6. Sass/SCSS Mixins 사용법 (0) | 2022.04.25 |
[Sass/SCSS] 4. 외부 Sass/SCSS 가져오기 (0) | 2022.04.23 |
[Sass/SCSS] 3. Sass/SCSS 문법 (0) | 2022.04.22 |
[Sass/SCSS] 2. Sass/SCSS의 Compile 방법 (0) | 2022.04.22 |