반응형

변수는 모든 프로그래밍 언어에서 정의되는 내용으로

반복되는 내용을 복사/붙여넣기로 사용하는 것이 아닌

 

임의의 값을 만들어 반복되는 내용을 담아 놓고 재사용 할 수 있게 해준다.

 

1. Sass에서의 변수

Sass 문법에서도 변수라는 개념이 존재한다.

변수 선언은 '$' 특수문자로 선언한다. (ex. $test : 0;)

 

Sass를 사용하면서 변수가 필요한 상황을 예를 들자면

 

특정 페이지에서 주로 사용되는 포인트 컬러값이 빨간색이라고 했을 때,

border-color, background-color, color의 값을 특정 영역별로

 

border-color : red;

background-color : red;

color : red

를 반복적으로 사용해야 할 것이다.

 

또한 이렇게 반복적으로 사용한 값이

디자인 개선 작업과 같이 포인트 컬러값을 변경하는 일이 생겼을 경우

 

각 영역을 일일이 찾아서 바꿔줘야 할 것이다.

 

이러한 번거로움을 개선하기 위해 Sass에서도 변수를 지원한다.

/* CSS */
.main{border:1px solid red; background-color:red;}
.main p{color:red;}
.main .box{background:red; color:red;}

/* SCSS */
$color : red;
.main{
   border:1px solid $color; background-color:$color;
   p{color:$color;}
   .box{background:$color; color:$color;}
}

위의 소스 같이 css로 변수선언 없이 작업을 하다보면

각 영역별 color값 red를 변경해야 하는 경우 일일이 찾아서

바꿔줘야하지만

 

아래 Sass(SCSS) 소스의 경우 $color의 값만 변경해주면

다른 영역들의 color 값을 손쉽게 동시에 변경할 수 있다.

 

2. 변수의 범위

Sass에서 변수의 범위는 크게 전역변수/지역변수로 나눌 수 있다.

 

전역변수는 말 그대로 Sass문법이 적힌 전체 영역에 해당하는 변수를 선언하는 것이고

지역변수는 특정 블럭 영역 안에 변수의 범위를 한정하여 선언하는 것이다.

 

/* 전역변수 선언 */
$color : red;

.test1{
   /* 지역변수 선언 */
   $size : 12px;
   
   color : $color;
   font-size : $size;
}

.test2{
   border-color : $color;
   
   /* 에러 출력 (선언된 $size 변수가 없음.) */
   font-size : $size;
}

위의 소스처럼 .test1의 영역 안에 $size라는 변수를 선언해서 사용을 하였는데

이 변수를 .test2에서는 가져와서 사용할 수 없다.

 

그렇기 때문에 위의 소스를 출력했을 때 에러가 출력된다.

 

3. 변수의 정의 (!default, !global)

Sass에서 변수를 정의할 때 !default, !global 플래그와 함께 작성할 수 있다.

 

!default의 경우,

기존에 정의된 변수의 값이 있을 경우 기존 변수의 값을 유지하고

새로 값을 따로 적용시키지 않는다.

/* 변수 선언 */
$color : red;
$color : blue !default;

.test1{
   /* color : red 출력 */
   color : $color;
}

위의 경우와 같이 $color 변수가 이미 red 값으로 선언이 되어있었기 때문에

$color: blue에 !default 선언한 경우 선언한 변수의 값이 무시되어 color:red 값이 결국 출력이 되었다.

 

반면에

기존 변수에 'null' 값이 들어가 있었을 경우

!default 를 사용하면 해당 변수값이 적용된다.

/* 변수 선언 */
$color : null;
$color : blue !default;

.test1{
   /* color : blue 출력 */
   color : $color;
}

 

 

!global의 경우,

2번 변수의 범위에서 말했듯 변수에는 지역변수/전역변수의 개념이 존재하는데

지역변수 영역에 선언한 변수를 전역변수로 사용할 수 있도록 만든다.

/* 전역변수 선언 */
$color : red;

.test1{
   /* 지역변수 선언 & !global 사용으로 전역변수화 */
   $size : 12px !global;
   
   color : $color;  // color: red;
   font-size : $size;  // font-size: 12px;
}

.test2{
   border-color : $color;  // color: red;
   font-size : $size;  // font-size: 12px;
}

 

 

 

반응형

'Frontend > Sass (SCSS)' 카테고리의 다른 글

[Sass 특징] @at-root  (0) 2020.05.06
[Sass 특징] Sass 데이터 타입(값) 소개  (0) 2020.04.02
[Sass 특징] @mixin 과 @include  (0) 2020.03.27
[Sass 특징] Nesting (중첩)  (0) 2020.03.19
Sass란?  (0) 2020.03.04

+ Recent posts