SCSS를 이전 회사에서 썼었는데 제대로 배우지 못하고 바로 쓰게 되어 아무런 지식이 없다. 추후에 입사하면 왜 쓰는지 말할 수 있게, 그리고 처음 세팅부터 제대로 할 수 있게 배워보려한다.
HTML이나 XML로 작성된 문서의 표시 방법을 기술하기 위한 스타일 시트 언어이다. CSS는 웹 페이지의 스타일과 레이아웃을 정의하기 위한 스타일시트 언어.
스타일 시트는 점점 커지고, 복잡해지고 어려워졌다.
중첩, 혼합, 상속 및 편리하고 유지보수가 용이한 CSS를 작성하게 도와주는 전처리기 SASS(SCSS)가 등장했다.
SASS 또는 SCSS로 작성한 스타일 코드를 컴파일하면 최종적으로 일반 CSS 파일로 생성하여 웹 페이지에 적용할 수 있다.
SASS에는 두 가지 구문이 있다.
.scss
$font-stack: Helvetica, sans-serif;
$primary-color: #333;
body {
font: 100% $font-stack;
color: $primary-color;
}
.sass
$font-stack: Helvetica, sans-serif
$primary-color: #333
body
font: 100% $font-stack
color: $primary-color
위 코드들이 컴파일되어 일반 CSS 코드로 변환되면 이렇게 된다.
body {
font: 100% Helvetica, sans-serif;
color: #333;
}
CSS 스타일 규칙을 중첩 구조로 작성하는 기능.
HTML 요소의 계층 구조를 반영하여 직관적으로 표현, 스타일을 적용할 수 있다.
가독성이 향상되고 스타일 규칙 간의 관계를 명확하게 파악할 수 있다.
/* CSS */
.container {
width: 100%;
}
.container .heading {
font-size: 24px;
color: #333;
}
.container .content {
padding: 10px;
background-color: #f5f5f5;
}
/* SCSS */
.container {
width: 100%;
.heading {
font-size: 24px;
color: #333;
}
.content {
padding: 10px;
background-color: #f5f5f5;
}
}
재사용 가능한 스타일 코드 조각을 나누어 작성하는 기능을 제공한다. 주로 스타일 시트 파일을 모듈화하고 관리하기 위해 사용됨.
_ (underscore)
로 시작하는 SCSS 파일. _variables.scss
, _mixins.scss
와 같은 파일이 Partials. Partials 파일은 일반적으로 스타일 시트의 특정 부분에 관련된 스타일 코드를 담고 있다.@import
문을 사용하여 다른 SCSS 파일에 포함시킨다. 이를 통해 스타일 시트를 필요한 부분별로 분리하여 구성할 수 있습니다SCSS 모듈은 스타일 코드를 논리적으로 구성하고 재사용 가능한 스타일 모듈을 생성하는 방법을 제공.
파일 단위의 스타일 코드 구성 방식.
@use
지시문을 사용하여 다른 SCSS 파일에서 모듈을 임포트함.// _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;
}
SCSS에서 재사용 가능한 코드 조각을 정의하고 호출하는 기능.
@mixin
키워드 사용@mixin theme($theme: DarkGray) {
background: $theme;
box-shadow: 0 0 1px rgba($theme, .25);
color: #fff;
}
.info {
@include theme;
}
.alert {
@include theme($theme: DarkRed);
}
.success {
@include theme($theme: DarkGreen);
}
기존의 스타일 규칙을 재사용하고 확장하는 기능.
/* This CSS will print because %message-shared is extended. */
%message-shared {
border: 1px solid #ccc;
padding: 10px;
color: #333;
}
// This CSS won't print because %equal-heights is never extended.
%equal-heights {
display: flex;
flex-wrap: wrap;
}
.message {
@extend %message-shared;
}
.success {
@extend %message-shared;
border-color: green;
}
.error {
@extend %message-shared;
border-color: red;
}
.warning {
@extend %message-shared;
border-color: yellow;
}
외에 연산자 기능도 있으나 제외함.
SCSS를 초기에 세팅하는 방법
프로젝트 폴더 생성: SCSS 파일을 저장할 프로젝트 폴더를 생성합니다.
Node.js
및 npm
설치
npm init
프로젝트를 위한 package.json
파일을 생성. 프로젝트 설정과 의존성 패키지 정보를 기록한다. 필요한 정보를 입력하거나 기본값을 사용할 수 있음.
npm install sass --save-dev
위 명령은 sass
패키지를 프로젝트의 개발 의존성(dependencies)으로 설치함.
--save-dev
옵션은 개발 의존성으로 설치하라는 의미.
(프로젝트의 실행에 필요한 패키지와 개발 과정에서 필요한 패키지를 분리하여 관리)
SCSS 파일을 프로젝트 폴더에 생성하고 작성한다.
일반적으로 .scss
확장자를 사용.
예를 들어, styles.scss
파일을 생성하여 스타일 코드 작성하기.
작성한 SCSS 파일을 CSS로 컴파일해야 함. 이를 위해 명령 프롬프트 또는 터미널에서 다음 명령을 실행한다
npx sass input.scss output.css
위 명령에서 input.scss
는 컴파일할 SCSS 파일의 경로를 나타내며, output.css
는 컴파일된 CSS 파일의 경로를 나타냄. 경로를 필요에 맞게 수정하여 사용.
--watch
옵션을 사용하여 Sass를 실행.npx sass --watch input.scss
output.css
SCSS의 사용법도 제대로 모르는 상태로 접했어서 항상 아쉬웠다. 이번 기회에 잘 알게 되어서 추후에 프로젝트시 꼭 스스로 세팅해서 사용해보겠다.