Sass는 CSS 확장언어이다.
까먹지 않기 위해 scss 사용법을 정리 해보려 한다.
규칙 중첩
, css 속성 중첩: 속성 중첩
SASS 코드
#gnb { background-color: #fff; width: 200px; ul { display: flex; color: #111; } }
css 컴파일 코드
#gnb { background-color: #fff; width: 200px; } #gnb ul { display: flex; color: #111; }
font
-family, font
-size, font
-style, font
-weightSASS 코드
h1 { font: { family: 'Malgun Gothic'; size: 25px; style: normal; weight: bold; } line-height: 1; }
css 컴파일 코드
h1 { font-family: 'Malgun Gothic'; font-size: 25px; font-style: normal; font-weight: bold; line-height: 1; }
CSS 문법과 동일한 선택자 외에 특수 선택자 2가지 기능을 제공
부모 참조 선택자
, 플레이스홀더 선택자
부모 참조 선택자
중첩 안에서 '&(Ampersand)'를 사용해 상위 엘리먼트를 참조
1. 부모 참조 선택자를 부모 엘리먼트와 결합하여 사용하는 방법
SASS 코드
.btn { color: #000; &.active { color:coral; } } .list_gnb { li { &:first-child { margin-left: 0; } } } div { &[class^='section_'] { background-color: #ccc; } }
css 컴파일 코드
.btn { color: #000; } .btn.active { color: coral; } .list_gnb li:first-child { margin-left: 0; } div[class^='section_'] { background-color: #ccc; }
SASS 코드
.list_gnb { li { &:first-child { margin-left: 0; } div.section & { margin-left: 20px; } } }
css 컴파일 코드
.list_gnb li:first-child { margin-left: 0; } div.section .list_gnb li { margin-left: 20px; }
플레이스홀더 선택자
@extend로 호출하며 %(Percent)
를 사용해 함수나 변수를 사용하듯이 내가 원하는 요소에 불러와 사용할 수 있음
SASS 코드
h1, %title-type { color: #000; } h2 { @extend %title-type; }
css 컴파일 코드
h1, h2 { color: #000; }
CSS 표준 문법과 동일하게 //
인라인(한 줄) 주석과 /* */
블록(여러 줄) 주석을 기능을 지원
컴파일된 CSS 파일에 출력되지 않음.
컴파일하는 스타일에 따라 다르게 나타남.
nested
, expanded
는 주석 그대로 컴파일
compact
는 여러 줄로 주석을 작성하였더라도 주석이 한 줄로 컴파일
compressed
는 CSS 파일에 주석이 노출되지 않지만 /*! */
문법으로 작성하면 주석이 삭제되지 않고 노출 가능
$author_n1: 'SHE'; $author_n2: 'CJW'; $author_n3: 'PKL'; /* Malgun Communication Web Standard Team Author #{$author_n1}, #{$author_n2}, #{$author_n3} */
사칙 연산자, 비교 연산자, 논리 연산자 사용 가능
사칙 연산자(+, -, *, /)
width: 500px + 500px;
비교 연산자(>, ==, !== 등)
논리 연산자(and, or, not)
$width: 50px; .box { @if not ($width > 100px) { height: 200px; } }
문자열, 숫자, 색상, 불리언(true, false), 리스트(Array), null 을 $변수명 : 값;
의 문법 형태로 작성하여 사용
$color-red: #ff0000;
변수의 유효 범위( Variables Scope)
div { $color-red: #ff0000; //지역 변수 $width: 50% !global; // !global 전역 변수 color: $color-red; } p { width: $width; }
변수는 재할당 가능
$width: 100%; $box-width: $width; .box-width { width: $box-width; }
!default
할당되지 않은 변수의 초기값을 설정 가능
SASS 코드
$color-base: pink; .box { $color-base: orange !default; color: $color-base; }
css 컴파일 코드
.box { color: pink; }
#{ } (변수 문자 보간)
#{ }
를 이용하여 어디서든 변수값을 문자열로 넣을 수 있음
$value25: 25; $value77: 77; // 숫자값인 변수를 + 연결하면 연산되어 102 값이 나옴 .box-variables { width: $value25 + $value77 + px; } // 문자 보간으로 변수를 + 연결하면 문자값인 2577 값이 나옴 .box-string_v2 { width: #{$value25} + #{$value77} + px; }