SASS (Syntactically Awesome Style Sheets)
Sass는 CSS를 더 강력하고 우아하게 작성할 수 있게 해주는 전처리기이다.
Sass는 기존 CSS의 한계를 극복하기 위해 만들어졌으며, 두 가지 문법을 제공한다:
- SCSS(Sassy CSS)
- 들여쓰기 기반의 Sass
SCSS는 CSS와 완벽하게 호환되는 문법을 가지고 있어 더 널리 사용된다.
기본적인 SCSS 예시:
|
|
장점
- 코드 재사용성 향상: 변수와 믹스인을 통해 코드 중복을 줄일 수 있다.
- 유지보수 용이성: 구조화된 코드로 인해 스타일시트의 관리가 쉬워진다.
- 생산성 향상: 간결한 문법과 강력한 기능으로 개발 속도를 높일 수 있다.
- CSS 호환성: 기존 CSS와 완벽히 호환되어 점진적으로 도입할 수 있다.
Sass의 핵심 기능들
변수 시스템
Sass는 강력한 변수 시스템을 제공하여 값을 재사용하기 쉽게 만든다:믹스인(Mixins)
재사용 가능한 스타일 블록을 정의할 수 있다:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
@mixin flex-center { display: flex; justify-content: center; align-items: center; } @mixin media-breakpoint($width) { @media screen and (min-width: $width) { @content; } } .card { @include flex-center; @include media-breakpoint(768px) { flex-direction: row; } }
확장/상속
기존 스타일을 다른 선택자에서 재사용할 수 있다:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
%button-base { padding: 10px 15px; border: none; border-radius: 4px; cursor: pointer; } .button-primary { @extend %button-base; background-color: $primary-color; color: white; } .button-secondary { @extend %button-base; background-color: $secondary-color; color: black; }
함수와 연산
Sass는 다양한 내장 함수와 수학적 연산을 지원한다:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
$base-size: 16px; .container { // 수학적 연산 padding: $base-size * 1.5; // 색상 함수 사용 background-color: lighten($primary-color, 20%); border-color: darken($primary-color, 10%); // 사용자 정의 함수 width: calculate-width(4); } @function calculate-width($columns) { @return $columns * 100px + ($columns - 1) * 20px; }
실제 프로젝트에서의 활용
모듈화와 파일 구조
Sass는 파일을 모듈화하여 관리할 수 있다:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
// _variables.scss $primary-color: #3498db; $secondary-color: #2ecc71; // _mixins.scss @mixin box-shadow($x, $y, $blur, $color) { box-shadow: $x $y $blur $color; } // main.scss @import 'variables'; @import 'mixins'; .card { background: white; @include box-shadow(0, 2px, 5px, rgba(0,0,0,0.1)); }
반응형 디자인
Sass를 사용하여 효율적인 반응형 디자인을 구현할 수 있다:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
$breakpoints: ( small: 576px, medium: 768px, large: 992px, xlarge: 1200px ); @mixin respond-to($breakpoint) { $size: map-get($breakpoints, $breakpoint); @media screen and (min-width: $size) { @content; } } .container { width: 100%; @include respond-to(medium) { width: 750px; margin: 0 auto; } @include respond-to(large) { width: 970px; } }
Sass를 사용할 때의 모범 사례
변수와 믹스인의 체계적인 관리
의미 있는 이름을 사용하고, 관련된 값들을 그룹화하여 관리한다. 이는 코드의 유지보수성을 크게 향상시킨다.파일 구조의 체계화
큰 프로젝트에서는 파일을 목적에 따라 분리하고, 명확한 import 순서를 유지하는 것이 중요하다.중첩 규칙의 적절한 사용
너무 깊은 중첩은 피하고, 가능한 3단계 이내로 유지하는 것이 좋다. 이는 CSS 출력을 깔끔하게 유지하는 데 도움이 된다.