SASS : 중괄호와
;
가 존재하지않아 가독성은 좋지만 들여쓰기가 중요하다
SCSS : 중괄호와;
가 존재하고 CSS 구문과 완전히 호환되도록 새로운 구문을 도입해 만든 Sass의 모든 기능을 지원하는 CSS의 상위집합이다.
=
로 바뀌고+
로 바뀐다. (서로간의 차이)SCSS는 중괄호를 통해 비교적 주석에서 자유롭지만
SASS는 중괄호가 없어/* */
는 단에 맞춰서 신경써야한다
SCSS의 경우
//
는 컴파일이 안되어 CSS에는 아예 내용이 나오지않으나
/* */
는 컴파일이 되어 CSS에서도 해당 내용이 존재한다.
SCSS의 중첩이 CSS에 각각에 적용이 된다.
&의 경우 상위선택자를 참조한다.
.container{
display : flex;
.item {
flex-grow : 1;
> span {
color : red;
&:hover{
color:blue;
}
}
}
}
.container {
display: flex;
}
.container .item {
flex-grow: 1;
}
.container .item > span {
color: red;
}
.container .item > span:hover {
color: blue;
}
&:hover는 상위 선택자인
>span
에 영향을 받은> span:hover
가 만들어진다.
어떤값 상위선택자부분
형태로 만들어진다.기본적으로 변수는 유효범위내에 변수의 사용이 가능하다
@at-root의 경우 루트 경로로 대상이 이동되어 CSS에 처리된다.
.container{
.item{
$size : 200px;
width : $size;
height : $size;
@at-root .box{
width:$size;
}
}
}
.container .item {
width: 200px;
height: 200px;
}
.box {
width: 200px;
}
변수
$size
에 의해 width height에 영향을 주고 @at-root로 인해 기존에.container .item .box
의 width가 200px인 것이 아닌
.box
의 width가 200px로 처리된다.
반복되는 부분에 대해
반복되는 부분 : { .. }
로 처리를 한다.
.container{
flex : {
grow:1;
shrink:0;
basis:auto;
};
}
.container {
flex-grow: 1;
flex-shrink: 0;
flex-basis: auto;
}
let size = 100
=>$size : 100
변수의 값 바로 뒤에
!flag
형태로 추가를 한다.
ex1) 지역변수에 있던 값이!global
로 인해 기존의 전역변수에 새롭게 재정의 된다. => 기존의 전역변수를 영향을 끼칠 수 있다.
ex2)!default
이미 변수값이 지정된 것이 존재한다면 그것으로 처리한다.
!default
를 사용하는데 기존에 만든 전역변수들을 bootStrap에서 덮어쓰지않게 하려고 쓴다.변수를
#{변수}
로 묶어서 값을 처리한다.
선택자나 속성은 일반 변수로는 처리가 불가능하다.
이를 처리하기 위해서 문자보간을 사용하는데, #{}를 사용하면 코드의 어디든지 변수값을 넣을 수 있다.
$name : "github";
$path : "~assets/images";
.box{
background-image:url("#{$path}/#{$name}.png");
}
.box-#{$name}{
font-size:12px;
}
.box {
background-image: url("~assets/images/github.png");
}
.box-github {
font-size: 12px;
}
- Numbers
1) 1
2) .82
3) 20px
4) 2fr- Strings
1) bold
2) absolute
3) "as/ss"- Colors
1) yellow
2) rgba( , , , )
3) #ffff00- Boolean
1) true
2) false- Null
1) null- Lists
1) (10px, 20px, 30px)
2) 10px, 20px, 30px
3) 10px 20px 30px- Maps
1) (a : apple , b : banana , c : chill )
- 산술연산자
- 비교연산자
- 논리연산자
+ - * / %
사용
- 주의 :
/
의 경우 앞쪽값과 뒤쪽값을 구분하는 역할로도 쓰여서 제대로 나누기의 의미를 사용하려면 3가지 방법이 있다.
1) 나누기 연산을 괄호로 묶는다 ( 20px / 2 )
2) 변수에 담아 처리한다 $a = 20px; ... $a/2
3) 다른 연산자를 추가한다. 20px / 2 + 1px
@if
@else
기존의 js에서 사용하던 && || !를 대신해서
SCSS에서는 and or not으로 사용한다.