SCSS 네스팅
Sass는 CSS preprocessor 의 하나로 현재 가장 폭넓게 사용되는 CSS Preprocessor입니다.
Sass의 초창기 문법은 css와 판이합니다. css의 대괄호 {}
와 세미콜론 ;
을 사용하지 않아 문법적으로는 간소하지만 CSS에 익숙한 기존 개발자에게는 익숙해지기 쉽지 않았습니다.
현재는 CSS의 상위 집합으로써 CSS를 확장한 문법이라 할 수 있는 SCSS가 주로 사용되며 확장자 또한 .sass
, .scss
로 서로 다릅니다.
scss를 사용하게 되면 기존에 사용하던 CSS 코드를 곧바로 SCSS 코드로 활용할 수 있게됩니다.
공식사이트 - http://sass-lang.com/ Sass 인터프리터 - https://www.sassmeister.com/
네스팅
SCSS를 이용해 자식 관계에 있는 선택자를 쉽게 표기할 수 있습니다. 네스트되어 있는 선택자에 가상 클래스 선택자를 적용하고 싶을 때는 &:hover
와 같이 예약문자 &
를 사용합니다.
// SCSS Nesting
.books {
margin: 0px;
li {
margin: 4px;
list-style-type: none;
a {
color: #0000ff;
&:hover { color: #00ff00; }
}
}
}
위 SCSS 코드를 CSS로 변환하면 아래와 같습니다.
/* CSS */
.books {
margin: 0px;
}
.books li {
margin: 4px;
list-style-type: none;
}
.books li a {
color: #0000ff;
}
.books li a:hover {
color: #00ff00;
}
속성 네스팅
선택자 뿐 아니라 css 속성들도 네스팅 할 수 있습니다. font-weight
, font-family
등과 같은 속성들도 아래와 같이 괄호를 이용해 묶을 수 있습니다.
// 속성 네스팅
.ad {
font: {
family: serif;
weight: bold;
}
border: {
top: {
width: 3px;
color: #0f0;
}
bottom: {
width: 3px;
color: #00f;
}
}
}
CSS로 변환 시
/* CSS */
.ad {
font-family: serif;
font-weight: bold;
border-top-width: 3px;
border-top-color: #0f0;
border-bottom-width: 3px;
border-bottom-color: #00f;
}
주석
주석은 css 코드 내에 설명 혹은 참조를 위한 코멘트를 남기는 것으로, scss에서는 기존 css의 주석인 /**/
로 감싸는 주석 외에도, //
로 시작하는 주석 역시 사용할 수 있습니다. 특히 //
를 사용하게 되면 scss 파일을 css로 컴파일 할 경우 컴파일 한 결과에는 주석이 포함되지 않습니다.
// 한줄 주석. 컴파일 결과에는 나타나지 않는다.
/*
* 여러줄 주석
*/