
이외의 여러가지 불편한 요소들이 있어, 이 단점을 해결해 줄 수 있는게 scss이다!
scss는 Syntactically Awesome StyleSheet의 약어이며
코드 재활용성을 올리고 가독성을 올리는 등 CSS의 단점을 보완하고,
개발 효율을 올리기 위해 등장한 CSS 전처리기 언어이다.
CSS를 편리하게 사용할 수 있도록 하며 추가 기능 또한 있는 확장판 스크립트 언어라고 보면 된다.
css전처리기는 Sass, Less, stylus 이다.
전처리기 언어는 css문법과 굉장히 유사하지만 선택자의 중첩(Nesting)이나 조건문, 반복문, 다양한 단위(Unit)의 연산등 표준 css보다 훨씬 많은 기능을 사용해서 편리하게 작성할 수 있다.
따라서 코드 작성에 드는 시간을 줄여주고, 코드를 유지하는데 도움을 준다.
sass, Less, Stylus 같은 전처리기 언어는 직접 동작시키는게 아니다.
웹은 css밖에 모르기 때문에 전처리기 언어 문법으로 코딩하고,
CSS로 컴파일해서 웹으로 동작 시켜야한다.
전처리기 언어 즉, Sass는 css의 대체 언어가 아닌 확장 전처리기 언어이고,
이는 결국 css코드를 생산해내기 위해 사용하는 일종의 도구인 셈이다.
/*scss로 작성했을 때*/
$gray: #333;
.header {
color: $gray;
&__inner {
border:1px solid red;
}
}
/* 컴파일 됐을때 */
.header {
color: $gray;
}
.header__inner {
border:1px solid red;
}
장점 말고 단점은 전처리기를 위한 도구가 필요하며, 컴파일 시간이 소요된다는 점...
확장자
Sass와 Scss는 다른 파일이다 (.sass, .scss)
구문 스타일
Sass는 파이썬과 같이 들여쓰기를 사용한다.
scss는 css와 같이 중괄호{}, 세미콜론(;)을 사용한다.
/*sass 사용*/
$color: red
$color2: blue
a
color:$color
&:hover
color:$color2
/*scss 사용*/
$color: red;
$color2: blue;
a{
color:$color;
&:hover{
color:$color2;
}
}
= 로 선언하고 +로 적용시킨다.@mixin으로 선언하고 @include로 적용시킨다./*sass*/
$main-font:"noto"
=title($font)
font-size:30px
font-family: $font
#header
+title($main-font)
/*scss*/
$main-font:"noto";
@mixin title($font) {
font-size:30px;
font-family: $font;
}
#header{
@include title($main-font);
}
1. CLI를 이용한 실행
$ npm install -g sass
or
$ yarn add -g sass
$ sass common.scss:common.css
$ $ sass src/sass:dist/css
2. VScode Extension을 이용한 실행 (이방법이 가장 쉽고 추천!)
* scss / css 폴더 분리
설정에서 scss에서 컴파일된 css파일은 (css)폴더에 저장 되게 처리하면 프로젝트 트리 구성을 정리하는데 도움이 된다.
setting.json을 열고 아래와 같은 코드를 추가해준다.
{
"liveSassCompile.settings.generateMap": false, // 만일 .map 파일 생성을 끄고 싶다면
"liveSassCompile.settings.formats": [
{
"format": "expanded",
"extensionName": ".css",
"savePath": "~/../css" //CSS 경로 설정
}
],
"liveServer.settings.donotShowInfoMsg": true
}