CSS에서 중복을 제거하고 유지보수에 도움을 주는 잔처리기 SASS/SCSS에 대해 알아보자.
SASS 공식 사이트
인파님의 SCSS 개념 소개 & 설치 세팅 정리
SASS(Syntactically Awesome Style Sheets)란 CSS의 기능을 확장하고
개발자들이 더 효율적이고 유지보수하기 쉬운 코드를 작성하도록 도와주는 CSS의 전처리기다.
$font-stack: Helvetica, sans-serif;
$primary-color: #333;
body {
font: 100% $font-stack;
color: $primary-color;
}
nav {
ul {
margin: 0;
padding: 0;
list-style: none;
}
li { display: inline-block; }
a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
}
파일 이름을 기반으로 하는 네임스페이스를 사용하여 SASS 파일의 변수, 믹스인, 함수를 참조 한다.
// _base.scss
$font-stack: Helvetica, sans-serif;
$primary-color: #333;
body {
font: 100% $font-stack;
color: $primary-color;
}
// styles.scss
@use 'base';
.inverse {
background-color: base.$primary-color;
color: white;
}
사이트 전체에서 재사용하려는 CSS 선언 그룹을 만들어 준다.
@mixin button-styles ($button-styles : DarkGray {
background-color : $button-styles;
padding : 10px;
font-size : 10px;
color : #333;
}
.btnOne {
@include button-styles;
}
.btnTwo {
@include button-styles($button-styles : DarkRed);
}
.btn-primary {
@include button-styles;
color : #777;
font-size : 15px;
}
SASS에서는 확장과 상속을 사용하여 스타일 시트의 코드 재사용성을 높여준다.
Extend는 @extend 키워드를 사용하여 다른 클래스에서 선언된 스타일을 상속 받는 것이다.
상속된 스타일에 대한 변경 사항은 상속한 클래스에도 적용이 된다.
.button {
padding: 10px;
background-color: blue;
}
.submit-button {
@extend .button;
color: white;
}
Inheritance는 상속되는 스타일에 %를 부여한다.
다만, %가 붙은 코드는 실제로 적용되지 않는다. (스타일 셋팅만 해둔다고 생각하자)
%button {
padding: 10px;
background-color: blue;
}
.submit-button {
@extend %button;
color: white;
}
CSS에서는 계산된 수치를 입력해주어야 했지만,
SASS에서는 연산자를 이용하여 수치를 직접 계산할 수 있다.
@use "sass:math";
.container {
display: flex;
}
article[role="main"] {
width: math.div(600px, 960px) * 100%;
}
aside[role="complementary"] {
width: math.div(300px, 960px) * 100%;
margin-left: auto;
}
npm install -g node-sass
.scss
또는 .sass
확장자를 가지며, 일반적으로 .scss
확장자를 사용한다.$primary-color: #007bff;
.btn {
background-color: $primary-color;
color: #fff;
}
node-sass [옵션] <인풋파일> <아웃풋파일>
node-sass -w input.scss output.css
<head>
<link rel="stylesheet" href="output.css">
</head>