๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

Syntax-03-variables

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");}

์ปดํŒŒ์ผํ•˜๋ฉด

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

๋ณ€์ˆ˜ ์œ ํšจ๋ฒ”์œ„(Variable Scope)#

๋ณ€์ˆ˜๋Š” ์œ ํšจ๋ฒ”์œ„๊ฐ€ ์žˆ์–ด์„œ ์„ ์–ธ๋œ ๋ธ”๋ก ( {} ) ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

.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;}

โ˜๏ธ $color-primary ๋ณ€์ˆ˜์— $blue ๋ณ€์ˆ˜๊ฐ€ ํ• ๋‹น๋˜์—ˆ๋‹ค.

์ปดํŒŒ์ผํ•˜๋ฉด

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

์ „์—ญ์„ค์ • !global#

!global ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ๋ธ”๋ก ๋‚ด๋ถ€์— ์ •์˜๋œ ๋ณ€์ˆ˜๋ผ ํ•˜๋”๋ผ๋„ ์œ ํšจ๋ฒ”์œ„๋ฅผ์ „์—ญ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

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

์ปดํŒŒ์ผํ•˜๋ฉด

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

๊ธฐ์กด์˜ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์„ ๊ฒฝ์šฐ ๊ฐ’์ด ๋ฎ์–ด์ ธ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

$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;}

์ดˆ๊นƒ๊ฐ’ ์„ค์ • !default#

!default ๋Š” ๊ธฐ์กด์— ๋ณ€์ˆ˜๊ฐ€ ํ• ๋‹น๋˜์–ด ์žˆ์œผ๋ฉด, ๊ธฐ์กด ํ• ๋‹น ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•˜๊ณ , ๊ธฐ์กด์— ๋ณ€์ˆ˜๊ฐ€ ํ• ๋‹น๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ์ดˆ๊นƒ๊ฐ’์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

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

์ปดํŒŒ์ผํ•˜๋ฉด

.box {background: red;}

โ˜๏ธ \$color-primary ๊ฐ€ ์ „์—ญ์—์„œ red ๋กœ ๊ธฐ์กด์— ํ• ๋‹น๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— .box ๋ธ”๋ก ๋‚ด๋ถ€์—์„œ blue ๊ฐ€ ์•„๋‹ˆ๋ผ red ๋กœ ์ปดํŒŒ์ผ๋œ๋‹ค.

โ˜๏ธ โ€˜๋ณ€์ˆ˜์™€ ๊ฐ’์„ ์„ค์ •ํ•˜๊ฒ ์ง€๋งŒ, ํ˜น์‹œ ๊ธฐ์กด ๋ณ€์ˆ˜๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ๋Š” ํ˜„์žฌ ์„ค์ •ํ•˜๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฒ ๋‹คโ€™ ๋ผ๋Š” ์˜๋ฏธโœŒ๏ธ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๊ฒฝ์šฐ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธฐ์กด์— ์„ค์ •ํ•œ ๋ณ€์ˆ˜์™€ ์ด๋ฆ„์ด ๊ฐ™์„ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ์ž์˜ ์„ค์ •์„ ์šฐ์„ ํ•ด์„œ์‚ฌ์šฉํ•˜๋„๋ก !default ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ด ๋†“๋Š”๋‹ค.

๋ฌธ์ž ๋ณด๊ฐ„ #{}#

#{} ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ฝ”๋“œ์˜ ๊ณต๊ฐ„ ์–ด๋””๋“ ์ง€ ๋ณ€์ˆ˜ ๊ฐ’์„ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

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

์ปดํŒŒ์ผํ•˜๋ฉด

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

โ˜๏ธ unquote() ๋Š” ๋ฌธ์ž์—์„œ ๋”ฐ์˜ดํ‘œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” Sass์˜ ๋‚ด์žฅ ํ•จ์ˆ˜.\$family ๋ณ€์ˆ˜์˜ ๊ฐ’์„ url ์ฃผ์†Œ ์‚ฌ์ด์— ๋ผ์›Œ ๋„ฃ์—ˆ๋‹ค.

Reference#

ํŒจ์ŠคํŠธ์บ ํผ์Šค - ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ๊ฐ•์˜ - HTML & CSS, SASS(SCSS) Part by ParkYoungWoong

Sass(SCSS) ์™„์ „ ์ •๋ณต!