- SCSS 개념 및 장점
- SCSS 사용방법
1. SCSS 개념 및 장점
CSS는 HTML 태그를 꾸미거나 효과를 넣어 주는 등 디자인 요소를 추가할 때 사용하는 전처리 과정입니다. 프로젝트 규모가 커지면 CSS는 불가피하게 가독성이 떨어지는 등 유지보수의 어려움을 주는 요소가 됩니다. 코드의 재활용성을 올리고, 가독성을 올리는 등 CSS에서 보이던 단점을 보완하고, 개발의 효율을 올리기 위해 등장한 개념이 SASS/SCSS라고 합니다.** SASS/SCSS 앞으로는 SCSS 문법으로만 진행할 것이 이기에 SCSS라고 통칭하겠습니다. SCSS는 중첩, 변수 선언, 연산자 등 많은 장점을 가지고 있습니다. 대표적인 장점이라고 볼 수 있는 셀렉터 중첩기능에 대해서 알아보겠습니다. // 일반적인 CSS 코드입니다
nav ul {
margin: 0;
padding: 0;
list-style: none;
}
nav li {
display: inline-block;
}
nav a {
display: block;
padding: 6px 12px;
text-decoration: none;
} // 깉은 코드를 SASS로 구현한 모습입니다.
nav
ul
margin: 0
padding: 0
list-style: none
li
display: inline-block
a
display: block
padding: 6px 12px
text-decoration: none // 같은 코드를 SCSS로 구현한 모습입니다.
nav {
ul {
margin: 0;
padding: 0;
list-style: none;
}
li { display: inline-block; }
a {
display: block;
padding: 6px 12px;
text-decoration: none;
}
}2. SCSS 사용방법
위에서 간략하게 장점을 다뤘는데, 문법을 정리하면서 좀더 다양한 장점에 대해서 알아보도록 하겠습니다.변수 ( Variables )
근래 CSS에서도 컬러코드등을 변수로 설정할 수 있습니다만, SCSS는 좀 더 간편한 방법으로 변수 선언 및 사용이 가능합니다.$color: #ed5b46;
$borderRadius: 5px;
div {
background-color: $color;
border-radius: $borderRadius;
}중첩 ( Nesting )
제가 생각하는 가장 큰 장점 중 하나라고 생각하는 기능입니다. 셀렉터를 중첩시킨다던지, 속성을 중첩시키거나 상위 요소를 참조하는 것이 가능합니다. // 일반 CSS 코드
label {
padding: 3% 0px;
width: 100%;
cursor: pointer;
color: $colorPoint;
}
label:hover {
color: white;
background-color: $color8;
}
// 같은 작업 SCSS 코드
label {
padding: 3% 0px;
width: 100%;
cursor: pointer;
color: $colorPoint;
&:hover {
color: white;
background-color: $color;
}
}임포트 ( Import )
다음은 import 입니다. 여러분이 생각하시는 import와 기능이 같습니다. 활용도가 단순하고, 확실해서 좋아하는 문법입니다.// common.scss
// colors
$color1: #ed5b46;
$color2: #f26671;
$color3: #f28585;
$color4: #feac97;
// Size Section
$borderRadius: 5px;
// default Tags
button {
cursor: pointer;
color: $color1;
background-color: $color2;
border-radius: $borderRadius;
border: 0px;
&:hover {
color: $color2;
background-color: $color1;
}
}
div {
padding: 5px;
border-radius: $borderRadius;
border: $color3 1px solid;
}// style.scss
@import "common.scss";
.login_box {
height: 100%;
width: 100%;
display: flex;
justify-content: center;
align-items: center;
div {
border: 0px;
}
.box {
background-color: $color4;
width: 700px;
height: 400px;
padding: 10px;
display: flex;
justify-content: space-between;
}
}⚠️ Heads up!언젠간 사장될 기능으로 보입니다. 대체하는 방법에 대해서는 차후 포스팅에서 다룰 수 있도록 해보겠습니다.
The Sass team discourages the continued use of the @import rule. Sass will gradually phase it out over the next few years, and eventually remove it from the language entirely. Prefer the @use rule instead. (Note that only Dart Sass currently supports @use. Users of other implementations must use the @import rule instead.)
저도 SCSS에 대해서 많이 알고 있지 않지만, 토이 프로젝트에 적용 후 적은 시간내에 효과적으로 진행할 수 있음을 체감했습니다. 비록 위에서 몇 가지 기능을 사용하지 않음에도 느껴지는 부분이라 공유하고 싶은 마음에 부족한 포스팅을 합니다. 딥하게 다루고 싶었으나, 깊숙이 들어갈수록 하나의 언어처럼 배우고 익혀야 할 요소들이 적지 않아 간략한 포스팅을 진행하기로 결정했습니다. 제 포스팅에서 흥미를 느끼신 분들은 아래의 URL에서 많은 정보를 얻어 가 실 수 있었으면 좋겠습니다.https://sass-lang.com/ [Sass: Syntactically Awesome Style SheetsSass is the most mature, stable, and powerful professional grade CSS extension language in the world.sass-lang.com](https://sass-lang.com/)