SCSS

2022. 11. 5. 19:11프로그래밍/HTML & CSS

    목차

Sass

CSS 전처리 도구

기존의 CSS 문법과 호환되지 않는 문제가 있음

 

SCSS

CSS 전처리 도구

SASS 를 기존의 CSS 문법과 호환되도록 만든 것

 

변수

$color: orange;

.container {
  background-color: $color;
}
  • $ 기호를 이용해 변수 선언 가능
  • css 속성 안에 변수 작성 가능

 

중첩

.container {
  font-size: 40px;
  .item { // .container .item
    color: orange;
    &:hover { // .item:hover
      color: yellow;
    }
  }
}
  • 중첩해서 하위 요소 작성 가능
  • &: 부모 선택자 참조

 

중첩된 속성

.container {
  font : {
    weight: bold; // font-weight
    size: 10px; // font-size
    family: sans-serif; // font-family
  };
  margin : {
    top: 10px; // margin-top
    left: 20px; // margin-left
  };
}
  • 선택자처럼 사용하되 뒷부분에 콜론을 붙여야 함
  • 블록의 끝에 세미콜론을 붙여야 함

 

주석

/* 주석1 */
// 주석2
  • 두 가지 주석 사용 가능
  • /* */ 주석은 CSS 로 변환 후에도 남아있음
  • // 주석은 CSS 로 변환 후에는 없어짐

 

산술 연산

div {
  $size: 30px;
  width: 20px + 20px;
  height: 40px - 10px;
  font-soze: 10px * 2;
  margin: (30px / 2); // margin: $size / 2;
  padding: 20px % 7;
}

.box {
  width: calc(400% - 200px);
}
  • 산술 연산 가능
  • 나누기 연산자 사용 시 소괄호로 묶거나 변수를 사용해야 함
  • 다른 단위의 산술 연산 시 calc() 함수를 사용해야 함

 

재활용 (Mixins)

@mixin center {
  display: flex;
  justify-content: center;
}

.container {
  @include center;
}
  • @mixin 을 사용해 스타일을 정의함
  • @include 를 사용해 해당 스타일을 사용함

 

@mixin box($size: 80px, $color: tomato) {
  width: $size;
  background-color: $color;
}
.container {
  @include box(200px, red);
  .item {
    @include box($color: green);
  }
}
.box {
  @include box;
}
  • 매개변수 사용 가능
  • 매개변수에 초기값 설정 가능
  • 인수로 매개변수의 이름 명시 가능

 

반복문

@for $i from 1 through 10 {
  .box:nth-child(#{$i}) {
    width: 100px * $i;
  }
}
  • 자바스크립트 반복문처럼 사용 가능
  • 값을 넣는 곳이 아닐 경우 #{} 을 사용해야 함
  • 괄호 안에 데이터를 넣을 수 있음

 

함수

@function ratio($size, $ratio) {
  @return $size * ratio;
}

.box {
  $width: 100px;
  width: $width;
  height: ratio($width, 1/2);
}
  • 자바스크립트 함수처럼 사용 가능
  • 어떠한 연산을 한 후 반환된 결과를 사용해야 할 경우

 

색상 내장 함수

$color: orange;

.box {
  background-color: mix($color, red); // 두 색상 섞기
  background-color: lighten($color, 10%); // 10% 밝아짐
  background-color: darken($color, 10%); // 10% 어두워짐
  background-color: saturate($color, 10%); // 채도가 10% 높아짐
  background-color: desaturate($color, 10%); // 채도가 10% 낮아짐
  background-color: grayscale($color); // 회색으로 만들어줌
  background-color: invert($color); // 색상 반전
  background-color: rgba($color, .5); // 불투명도 50%
}

 

가져오기

@import "./sub", "./sub2";
  • url() 생략 가능
  • .scss 확장자 생략 가능
  • 여러 개 한번에 가져올 수 있음