Skip to content
On this page

Sass variables

Title
Sass variables
Category
CSS
Tags
Aliases
Sass variables
Created
4 years ago
Updated
last year

Sass(SCSS) Syntax - 3. 변수

❗️ 해당 글은 패스트캠퍼스 - 프론트엔드 개발 강의에서 HTML & CSS, SASS(SCSS) Part의 박영웅 강사님의 강의자료(Sass(SCSS) 완전 정복!)를 보며 정리한 것입니다.

변수(Variables)

반복적으로 사용되는 값을 변수로 지정할 수 있다.

변수 이름 앞에 항상 $ 를 붙여야 한다.

$변수이름: 속성값;
$변수이름: 속성값;
$color-primary: #e96900;
$url-images: "/assets/images/";
$w: 200px;

.box {
  width: $w;
  margin-left: $w;
  background: $color-primary url($url-images + "bg.jpg");
}
$color-primary: #e96900;
$url-images: "/assets/images/";
$w: 200px;

.box {
  width: $w;
  margin-left: $w;
  background: $color-primary url($url-images + "bg.jpg");
}

컴파일하면

.box {width: 200px;margin-left: 200px;background: #e96900 url("/assets/images/bg.jpg");}
.box {width: 200px;margin-left: 200px;background: #e96900 url("/assets/images/bg.jpg");}

변수 유효범위(Variable Scope)

변수는 유효범위가 있어서 선언된 블록 ( {} ) 내부에서만 사용할 수 있다.

.box1 {
  $color: #111;
  background: $color;
}
// Error
.box2 {
  background: $color;
}
.box1 {
  $color: #111;
  background: $color;
}
// Error
.box2 {
  background: $color;
}

☝️ 변수 $color 가 .box1 의 블록 안에서 설정되었기 때문에 블록 밖인 .box2 에서는 사용할 수 없다.

🔗 중첩 벗어나기 @at-root 참조

변수 재 할당(Variable Reassignment)

변수에 변수를 할당할 수 있다.

$red: #FF0000;
$blue: #0000FF;

$color-primary: $blue;
$color-danger: $red;

.box {
  color: $color-primary;
  background: $color-danger;
}
$red: #FF0000;
$blue: #0000FF;

$color-primary: $blue;
$color-danger: $red;

.box {
  color: $color-primary;
  background: $color-danger;
}

☝️ $color-primary 변수에 $blue 변수가 할당되었다.

컴파일하면

.box {color: #0000FF;background: #FF0000;}
.box {color: #0000FF;background: #FF0000;}

전역설정 !global

!global 플래그를 사용하면 특정 블록 내부에 정의된 변수라 하더라도 유효범위를전역으로 설정할 수 있다.

.box1 {
  $color: #111 !global;
  background: $color;
}
.box2 {
  background: $color;
}
.box1 {
  $color: #111 !global;
  background: $color;
}
.box2 {
  background: $color;
}

컴파일하면

.box1 {background: #111;}.box2 {background: #111;}
.box1 {background: #111;}.box2 {background: #111;}

기존의 같은 이름의 변수가 사용되고 있을 경우 값이 덮어져 사용될 수 있다.

$color: #000;
.box1 {
  $color: #111 !global;
  background: $color;
}
.box2 {
  background: $color;
}
.box3 {
  $color: #222;
  background: $color;
}
$color: #000;
.box1 {
  $color: #111 !global;
  background: $color;
}
.box2 {
  background: $color;
}
.box3 {
  $color: #222;
  background: $color;
}

컴파일하면

.box1 {background: #111;}.box2 {background: #111;}.box3 {background: #222;}
.box1 {background: #111;}.box2 {background: #111;}.box3 {background: #222;}

초깃값 설정 !default

!default 는 기존에 변수가 할당되어 있으면, 기존 할당 값을 사용하게 하고, 기존에 변수가 할당되어 있지 않으면 초깃값으로 설정한다.

$color-primary: red;

.box {
  $color-primary: blue !default;
  background: $color-primary;
}
$color-primary: red;

.box {
  $color-primary: blue !default;
  background: $color-primary;
}

컴파일하면

.box {background: red;}
.box {background: red;}

☝️ $color-primary 가 전역에서 red 로 기존에 할당되어 있기 때문에 .box 블록 내부에서 blue 가 아니라 red 로 컴파일된다.

☝️ ‘변수와 값을 설정하겠지만, 혹시 기존 변수가 있을 경우는 현재 설정하는 변수의 값은 사용하지 않겠다’ 라는 의미✌️ 외부 라이브러리의 경우, 라이브러리를 불러온 사용자가 기존에 설정한 변수와 이름이 같을 경우에 사용자의 설정을 우선해서사용하도록 !default 플래그를 설정해 놓는다.

문자 보간 #{}

#{} 키워드를 사용해 코드의 공간 어디든지 변수 값을 넣을 수 있다.

$family: unquote("Droid+Sans");
@import url("http://fonts.googleapis.com/css?family=#{$family}");
$family: unquote("Droid+Sans");
@import url("http://fonts.googleapis.com/css?family=#{$family}");

컴파일하면

@import url("http://fonts.googleapis.com/css?family=Droid+Sans");
@import url("http://fonts.googleapis.com/css?family=Droid+Sans");

☝️ unquote() 는 문자에서 따옴표를 제거하는 Sass의 내장 함수.$family 변수의 값을 url 주소 사이에 끼워 넣었다.

Reference

패스트캠퍼스 - 프론트엔드 개발 강의 - HTML & CSS, SASS(SCSS) Part by ParkYoungWoong

Sass(SCSS) 완전 정복!

Released under the MIT License.