css는 HTML 태그를 꾸미거나 효과를 넣어 주는 등 디자인 요소를 추가할 때 사용하는 전처리 과정.
하지만 프로젝트 규모가 커지거나, 작업이 고도욀수록 CSS는 불가피하게 가독성이 떨어지는 등 유지보수에 어려움을 주는 요소가 됨.
코드의 재사용성을 올리고, 가독성ㅇ르 올리는 등 CSS에서 보이던 단점을 보완하고, 개발의 효율을 올리기 위해 등장한 개념이 SASS / SCSS라고 함
(즉 CSS의 태생적 한계를 보완하기 위한 유용한 도구를 제공하는게 SASS)
- 변수 사용
- 조건문과 반복문
- Import
- Nesting
- Mixin
- Extend/Inheritance
npm i sass --save
yarn add sass
Sass(Syntacically Awesome Style Sheets)의 3버전에서 새롭게 등장한 SCSS는 CSS 구문과 완전히 호환되도록 새로운 구문을 도입해 만든 Sass의 모든 기능을 지원하는 CSS의 상위집합
(즉 SCSS는 CSS와 거의 같은 문법으로 Sass이용 가능)
간단한 차이는 {}(중괄호)와 ;(세미콜론)의 유무
또 하나의 차이점은 mixin(재사용 가능한 기능을 만드는 방식)임.
기능을 재사용하기 위해 Sass의 경우 '='로 선언하고 '+'로 적용시킴.
SCSS의 경우' @mixin'으로 선언, '@include'로 적용.
SCSS는 중첩, 변수선언, 연산자 등 많은 장점이 있음
-SCSS는 다양한 데이터 타입을 정의하고 있고, 그걸 변수처럼 활용할 수 있음
Nesting을 통해 상위 선택자의 반복을 줄 수 있음
Nesting(중첩) 내부에서 & 키워드는 상위(부모) 선택자로 치환됨.
치환 원리 이기 때문에 다음과 같이 응용도 가능
반복적으로 사용되거나 관리하고 싶은 값은 변수로 지정할 수도 있음.
(단, 변수명 앞에는 항상 '$'를 붙여야함)
단 변수는 선언된 블록 내에만 유효 범위를 가짐
#{ }을 이용하면 JavaScript의 템플릿 리터럴처럼 코드의 어디든 변수 값을 넣을 수 있음
연산자는 레이아웃을 디테일하게 디자인할 때 유용하게 쓰일 수 있음
재활용할 CSS 스타일을 정의할 수 있는 유용한 기능
@mixin을 통해 스타일을 선언하고 @include을 통해 사용
함수를 정의해서 사용할 수 있음
다만 함수와 Mixin이 헷갈릴 수도 있는데, 이들은 반환값에 차이가 있음
조건의 참, 거짓에 따라 하나의 값을 반환
JavaScript의 삼항 연산자와 구조가 비슷함
즉 'width'가 300px 보다 작으면 'width' 속성이 컴파일 된 CSS에 제거됨
조건에 따른 분기 처리가 가능
(JavaScript의 if-else문과 구조가 비슷함)
스타일을 반복적으로 출력함
(JavaScript for문과 유사)
다만 through와 to에 따라 종료 조건이 달라짐
List 또는 Map데이터 반복할때 사용
(JavaScript의 for-in/for-of문과 유사)
Sass에선 기본적으로 다양한 내장함수를 제공함
(종류가 많아 필요할때마다 찾아서 사용하는게 좋음)