Css ( Cascading Style Sheets )

HTML에 색상이나 배치등을 레이아웃이나 스타일 요소를 담당

Scss ( Sassy Cascading Style Sheets )

Sass를 더 쉽게 사용하기 위한 버전 (Sass 3버전부터 출시, Sass의 상위호환)

Sass ( Syntactically Awesome Style Sheets )

Css의 단점을 보완한 Css의 확장형

 

 

 

Scss 특징

 

1. 변수 할당 : 자주 쓰는 스타일 요소를 변수로 지정하여 재사용에 용이함

 // 변수설정
$font-stack: Helvetica, sans-serif;
$base-margin: 16px;

body {
  font-family: $font-stack;
  margin: $base-margin;
}

 

2. Nesting(중첩) : 부모(상위 선택자)의 반복 없이 자식(하위 선택자)를 위해 단순 나열하는 구조

// Scss

.navbar {
  background-color: #333;

  .nav-item {
    color: white;

    &:hover {
      background-color: #555;
    }
  }
}
// Css

.navbar {
  background-color: #333;
}

.navbar .nav-item {
  color: white;
}

.navbar .nav-item:hover {
  background-color: #555;
}

더욱 간결하고 가독성 높게 코드를 짤 수 있다.

 

3. 모듈화 : 유지보수 목적으로 css 분할 (header와 footer처럼 공통영역일 경우), @use와 @import를 사용

// 변수 파일.scss
$primary-color: #3498db;
// 스타일.scss
@import 'variables'; // 변수파일 불러오기

body {
  color: $primary-color;
}
// 메인파일.scss
@import 'variables';
@import 'styles';

 

4. Mixins : 반복적으로 재사용할 CSS 스타일 그룹 선언을 정리하는 기능(@mixin 설정 후 @import 사용)

// mixin 설정

@mixin button-styles($bg-color, $text-color) {
  background-color: $bg-color;
  color: $text-color;
  padding: 10px 20px;
  border-radius: 5px;
  cursor: pointer;
  &:hover { opacity: 0.8; }
}
// mixins 사용

@import 'mixins';

.primary-button {
  @include button-styles(#3498db, #ffffff);
}

.secondary-button {
  @include button-styles(#2ecc71, #ffffff);
}
// mixin 없는 Css의 경우

primary-button {
  background-color: #3498db;
  color: #ffffff;
  padding: 10px 20px;
  border-radius: 5px;
  cursor: pointer;
}
.primary-button:hover { opacity: 0.8; }

.secondary-button {
  background-color: #2ecc71;
  color: #ffffff;
  padding: 10px 20px;
  border-radius: 5px;
  cursor: pointer;
}
.secondary-button:hover { opacity: 0.8; }

 

5. 상속 / 확장 : 타 선택자의 CSS를 그대로 상속 공유, @extend를 사용

%base {
  padding: 10px;
}

// 상속 적용
.button {
  @extend %base;
  background: blue;
}

 

6. 연산자 : 수학적 기능 사용

// 연산자 scss
.item {
  margin-top: 20px / 2;
  padding: 20px * 2;
}

 

 

 

+ Recent posts