CSS전처리기(CSS pre-processor)라 불리는 SASS(Syntactically Awesome StyleSheet)는 CSS의 단점을 보완한 CSS의 확장형이다. SCSS와 SASS 비슷한 두개가 있는데(이외도 있지만 여기서는 SCSS만 다룬다), SASS를 더 편리하게 수정한 버전이 SCSS이다. 확장자는 .scss 사용하며, 브라우저에서 SASS구문을 이해하지 못하기 때문에 컴파일하는 작업이 필요하다. 컴파일 작업을 위해서는 SASS 환경설치가 필요하다.
npm install -g node-sass
를 커멘드라인에 입력하여 node-sass를 설치하자.
다른 사람들은 한번에 잘 설치하던대 나는 에러파티에 초대 되었당..(Mac os)
온갖 에러가 난다면? node-sass 깃헙 : 에러모음집 에서 확인
sudo npm install --unsafe-perm -g node-sass
으로 다시 설치하니 성공적!
최근 가장 많이 사용하는 VS Code에서 Live Sass Compiler 익스텐션을 설치하였다. 컴파일 작업을 하지 않아도 실시간으로 확인이 가능하며, 문법오류도 체크해 주기 때문에 에러 찾는 시간을 아낄 수 있다. 그럼에도 불구하고 익스텐션 없이 하려면?
node-sass foo.scss > bar.css
로 scss파일을 css파일로 변환하여 보여준다. 1회에 해당됨으로 자동감지하기위해서는 watch command를 사용하여야 한다. (하지만 다른사람들은 그냥 된다는대 나는 왜 안되는지 모르겠다 : 리액트에서는 컴파일 없이 SCSS파일 link와 import 하면되고, 일반 .html에 link할 경우 컴파일이 필요하다!)
자동감지 watch command node-sass --watch src/sass/foo.scss --output dist/css
$gy: greenyellow; // 변수를 사용할때는 $gy '$포함변수명'을 사용한다.
$bl: black;
$yl: yellow;
$or: orangered;
$lg: #eee;
$border: solid black 4px;
$px800: 400px;
@at-root
지시자를 사용한다..s_box {
&:hover { // 여기서 .s_box의 언급없이 &선택자를 사용했다.
background-color: $yl;
}
}
@import './경로/파일명.scss'
를 사용해 다른 css파일을 불러올 수 있다._언더스코어
를 사용하면 css로 컴파일 하지 않는다(HTML에서 링크할일 없는 경우는 _사용)@mixin flexCenter($align, $type, $color: black) {
/* 3개의 매개변수 지정, 마지막 컬러값에는 기본값으로 black을 지정 */
display: flex;
justify-content: center;
align-items: $align;
flex-wrap: wrap;
&:hover {
border: $type 4px $color;
}
}
.color-box {
@include flexCenter(center, none); /*인자전달 & 기본값 사용*/
padding-top: 20px;
.s_box {
border: $border;
border-radius: 50%;
width: 100px;
height: 100px;
background-color: $lg;
margin: 12px;
@include flexCenter(center, solid, fuchsia); /*인자전달*/
&:hover {
background-color: $yl;
}
}
}
- 연산은 변수 값에 가능
$input-wrap-width: 100% - 10px;
$input-wrap-height: 100px / 50px * 20%;