-
Sass[SCSS] 기초 2 - 변수(Variables) 알아보기 & 사용하기 (전역변수, 지역변수, 재할당 등)
우선 Scss에서 가장 많이 쓰는 기능중 하나인 변수입니다.
일반 css에서도 변수 선언 방법이 있는데 바로 :root 가상 클래스입니다.
:root { --main-color: skyblue; --basic-padding: 5px 15px; }
이런식으로 --main-color 와 --basic-padding 의 변수를 미리 설정해두고
.button { background-color: var(--main-color); padding: var(--basic-padding); }
이런식으로 사용합니다.
Scss에서도 문법 방식은 다르지만 이와 마찬가지로 비슷하게 사용됩니다.
/* 변수 선언 (Variables) */ $red: rgb(241, 72, 72); $blue: rgb(49, 102, 247); $green: rgb(54, 204, 86); .item-list { display: flex; list-style: none; gap: 15px; .item { .item-button { padding: 5px 10px; border: none; border-radius: 6px; font-size: 16px; color: #fff; cursor: pointer; &.red { background-color: $red; /* 변수 사용 */ } &.blue { background-color: $blue; /* 변수 사용 */ } &.green { background-color: $green; /* 변수 사용 */ } } } }
Scss는 $red, $blue, $green 이런식으로 변수명 앞에 $를 붙혀줍니다.
그리고 아래에서 css에 대한 값으로 $red, $blue, $green 이렇게 넣어주기만 하면 됩니다.
변수명을 지정할때 주의할 점이 있는데
$-color: red; // - (대시&하이픈) 가능 $_padding: 20px 25px; // _ (언더바) 가능 $+padding: 20px 25px; // 특수문자 오류 $2color: red; // 숫자 오류
변수명 가장 앞에 특수문자를 사용하려면 - (대시&하이픈), _ (언더바) 이거 두개만 사용할 수 있고 나머지는 전부 오류가 발생합니다.
앞에 숫자를 사용해도 마찬가지로 컴파일시 오류가 발생해요.
그냥 맘편하게 변수를 사용하려면 특수문자나 숫자등을 쓰지 않고 일반 영문으로 변수명을 지정하면 될 것 같네요. :)
굳이 사용하고 싶으면 대시나 언더바를 사용하도록 해요.
아래는 컴파일된 결과물과 적용된 화면입니다. 컴파일된 코드를 보면 변수 자체는 컴파일되지 않습니다. (변수 선언이라는 주석아래 바로 .item-list에 대한 css가 나옴)
다만 변수가 사용된 값에 직접 들어가있는걸 확인할 수 있어요.
@charset "UTF-8"; /* 변수 선언 (Variables) */ .item-list { display: flex; list-style: none; gap: 15px; } .item-list .item .item-button { padding: 5px 10px; border: none; border-radius: 6px; font-size: 16px; color: #fff; cursor: pointer; } .item-list .item .item-button.red { background-color: rgb(241, 72, 72); /* 변수 사용 */ } .item-list .item .item-button.blue { background-color: rgb(49, 102, 247); /* 변수 사용 */ } .item-list .item .item-button.green { background-color: rgb(54, 204, 86); /* 변수 사용 */ }
추가로 변수에 이미지 경로를 지정해서 사용할수도 있습니다.
$image-url: "../images/"; .image-list { display: flex; list-style: none; gap: 15px; .image { width: 200px; height: 200px; background-repeat: repeaet; background-position: center center; background-size: cover; &:nth-child(1) { background-image: url($image-url + "item_img01.jpg"); } &:nth-child(2) { background-image: url($image-url + "item_img02.jpg"); } &:nth-child(3) { background-image: url($image-url + "item_img03.jpg"); } } }
좀 더 심화해서 알아보자면 변수를 선언할때 선택자 안에서 선언하여 지역변수로 지정할 수 있는데 지역변수를 바깥에서 사용하면 오류가 발생합니다.
.name { $text-color: darkorange; // 지역변수 선언 strong { color: $text-color; // 지역변수 사용 } } .desc { span { color: $text-color; // 지역변수를 바깥에서 사용 } }
잘못된 사용 방법의 예시입니다. 평소에 실무에서 사용을 할때는 주로 전역변수를 사용하고 특별한 경우를 제외하면 지역변수를 잘 사용하진 않습니다.
특별하게 지역변수를 바깥에서 사용해야할 경우에는 !global로 전역변수화 시켜줄 수 있습니다.
.name { $text-color: darkorange !global; // !global 전역변수 strong { color: $text-color; // global 전역변수 사용 } } .desc { span { color: $text-color; // global 전역변수를 바깥에서 사용 } }
마지막으로 Scss에서의 변수도 자바스크립트의 변수와 같이 재할당이 가능합니다. 아래는 예시 코드입니다. :)
$main-color: rosybrown; // 변수선언 $main-color: brown; // 변수값 재할당 $sub-color: $main-color; // 변수에 변수값 할당 p { color: $main-color; // brown background-color: $sub-color // brown }
'코딩 기록 > Sass [SCSS]' 카테고리의 다른 글
Sass[SCSS] 기초 이론 5 - 그룹 선언하기, 사용하기, 선택자 속성 사용 (@mixin, @include, @extend) (0) 2023.02.12 Sass[SCSS] 기초 이론 4 - scss에서 연산자 사용하기 (Operations & calc) (0) 2023.02.05 Sass[SCSS] 기초 이론 3 - @import 를 사용해서 다른 scss 파일 불러오기 (파일 분할 Partial) (0) 2023.02.05 Sass[SCSS] 기초 이론 1 - 주석, 중첩(Nesting), 부모 선택자 참조(& Ampersand) 사용하기 (0) 2023.01.31 Sass[SCSS] 시작하기 (확장 설치, 초기 세팅) (2) 2023.01.31 댓글