본문 바로가기
프론트엔드/CSS 심화

Sass(SCSS)

by 학습하는 청년 2024. 4. 18.

최종 수정 : 2024-04-18

Sass(SCSS)

css는 웹 표준이기 때문에 문법이 빠르게 바뀌지 않는다. 그래서 개발자들이 사용하기 편한 여러가지 문법을 추가한 새로운 언어를 만들기 시작했다. 그 중에 가장 많이 쓰이는 것이 바로 Sass이다.

 

변수, 네스팅(Nesting) 문법, 믹스인(Mixin) 등등 다양한 기능을 제공한다. 이 중에서 변수와 네스팅 등은 웹 표준으로 흡수되기도 했다.

 

Sass는 프리프로세서(Preprocessor) 스크립트 언어라고 하는데, 프로그램을 통해서 Sass 코드를 CSS로 변환한다. Sass에는 기존 Sass와 SCSS 두 가지 문법이 있는데, 최근에는 CSS의 모든 문법 위에서 확장된 문법을 사용하는 SCSS를 많이 사용한다.

 

장점

파일을 분리하고 부럴 올 수 있기 때문에 규모가 큰 코드를 관리하기 좋다.

반복되는 CSS 코드를 줄여주는 다양한 문법이 있어서 작업 효율이 좋다.

 

단점 및 한계

여전히 CSS 클래스 이름이 충돌할 가능성이 있다.


네스팅 예시

자식 선택자를 객체처럼 한 묶음으로 표현한 형태

nav {
  ul {
    margin: 0;
    padding: 0;
    list-style: none;
  }

  li { display: inline-block; }

  a {
    display: block;
    padding: 6px 12px;
    text-decoration: none;
  }
}
/* ---------------------------------------- */
nav ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

nav li {
  display: inline-block;
}

nav a {
  display: block;
  padding: 6px 12px;
  text-decoration: none;
}

믹스인 예시

공통된 속성을 함수처럼 사용하는 형태

@mixin theme($theme: DarkGray) {
  background: $theme;
  box-shadow: 0 0 1px rgba($theme, .25);
  color: #fff;
}

.info {
  @include theme;
}

.alert {
  @include theme($theme: DarkRed);
}

.success {
  @include theme($theme: DarkGreen);
}
/* ------------------------------------------------ */
.info {
  background: DarkGray;
  box-shadow: 0 0 1px rgba(DarkGray, .25);
  color: #fff;
}

.alert {
  background: DarkRed;
  box-shadow: 0 0 1px rgba(DarkRed, .25);
  color: #fff;
}

.success {
  background: DarkGreen;
  box-shadow: 0 0 1px rgba(DarkGreen, .25);
  color: #fff;
}

참고 자료

https://sass-lang.com/guide/

 

Sass: Sass Basics

CSS on its own can be fun, but stylesheets are getting larger, more complex, and harder to maintain. This is where a preprocessor can help. Sass has features that don’t exist in CSS yet like nesting, mixins, inheritance, and other nifty goodies that help

sass-lang.com

 

'프론트엔드 > CSS 심화' 카테고리의 다른 글

Tailwind CSS  (0) 2024.04.18
CSS-in-JS  (0) 2024.04.18
CSS Modules  (0) 2024.04.18
CSS 클래스 이름 설정 : BEM(Block Element Modifier)  (0) 2024.04.18
border: 0; 과 border: none;의 차이  (1) 2024.04.01

댓글