Less.js: "๊ธฐ๋ณธ" ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ง€์› ์ถ”๊ฐ€(SASS์˜ !default์™€ ์œ ์‚ฌ)

์— ๋งŒ๋“  2013๋…„ 12์›” 03์ผ  ยท  35์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: less/less.js

SASS์—์„œ LESS๋กœ์˜ ์ „ํ™˜์„ ๊ณ ๋ คํ•˜๊ณ  ์žˆ์ง€๋งŒ "๊ธฐ๋ณธ ๋ณ€์ˆ˜" ๊ธฐ๋Šฅ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํฐ ์žฅ์• ๋ฌผ์ž…๋‹ˆ๋‹ค(http://sass-lang.com/documentation/file.SASS_REFERENCE.html#variable_defaults_ ์ฐธ์กฐ).

์ด ๊ธฐ๋Šฅ์€ ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ์ผ์ข…์˜ "API" ์—ญํ• ์„ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ SASS ์ฝ”๋“œ๋ฅผ ๋ฐฐํฌํ•  ๋•Œ ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์€ ์ž์‹ ์ด ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ๊ธฐ๋ณธ๊ฐ’์„ ์žฌ์ •์˜ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€์ˆ˜๊ฐ€ ์•ž์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์งœ์ž”! ์žฌ์ •์˜๊ฐ€ ํ•„์š”ํ•œ ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” (์•„๋งˆ๋„) ๋งŽ์€ ํŒŒ์ผ์˜ ์ˆœ์„œ๋ฅผ ๋งŒ์ง€์ž‘๊ฑฐ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ตฌํ˜„ ์ž‘์—…์„ ์‹œ์ž‘ํ–ˆ๊ณ  ์•„์ง ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์ด pull ์š”์ฒญ์„ ํ† ๋ก ์˜ ์‹œ์ž‘์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. https://github.com/less/less.js/pull/1705

๋‹ค์Œ ๊ตฌ๋ฌธ์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

?foo: value;

SASS ๋ฐฉ์‹๊ณผ ๋ฐ˜๋Œ€๋กœ:

<strong i="13">@foo</strong>: value !default;

2๊ฐ€์ง€ ์ด์œ  ๋•Œ๋ฌธ์— - ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  !default ๊ตฌ๋ฌธ์€ ๋ฏธ๋ž˜์— ์˜ค๋ฅธ์ชฝ์—์„œ ํ‘œํ˜„์‹ ๊ตฌ๋ฌธ ๋ถ„์„์— ์ž ์žฌ์ ์ธ ๋ฌธ์ œ๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ํ‹€๋ฆด ์ˆ˜ ์žˆ์Œ).

๋‚ด๊ฐ€ ์ƒ๊ฐํ•ด ๋‚ธ ๊ตฌํ˜„์€ ๋†€๋ผ์šธ ์ •๋„๋กœ ๊ฐ„๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ์ค‘์š”ํ•œ ๊ฒƒ์„ ๋†“์น˜์ง€ ์•Š์•˜์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค. ์˜๊ฒฌ์„ ๋ณด๋‚ด์ฃผ์‹œ๋ฉด ์ •๋ง ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฑด๋ฐฐ,
ํ•„

consider closing feature request low priority

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚ด๊ฐ€ ์“ด ๊ธฐ์‚ฌ๋ฅผ ์ œ์•ˆํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ @seven-phase-max๊ฐ€ ๋งํฌ๋œ ๊ธฐ์‚ฌ๋ฅผ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๐Ÿ˜„ ์šฐ๋ฆฌ๋ฅผ ๋ฏฟ์œผ์„ธ์š”. ๋‹น์‹ ์ด ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์€ ์ด๋ฏธ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค! ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ป๊ฒŒ/์™œ ์กด์žฌํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋ ค๋ฉด Less์˜ ๋ณ€์ˆ˜ ํ‰๊ฐ€๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  35 ๋Œ“๊ธ€

๋ฌธ์„œ ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.


์—…๋ฐ์ดํŠธ: ๋ฏธ๋ž˜์˜ ๋ฐฉ๋ฌธ์ž๋ฅผ ํ˜ผ๋™ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ์ด ๊ฒŒ์‹œ๋ฌผ์˜ ์ด์ „ ๋Œ“๊ธ€์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค(์—ฌ๊ธฐ์„œ "๋ณ€์ˆ˜๊ฐ€ ์•„์ง ์ •์˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•" ์งˆ๋ฌธ์— ๋‹ตํ•˜๋ ค๊ณ  ํ–ˆ์œผ๋‚˜ "XY ๋ฌธ์ œ"์ด๊ณ  ์ •๋‹ต์— ๋Œ€ํ•œ ์š”์ ์„ ๋†“์ณค์Šต๋‹ˆ๋‹ค. Sass-like !default ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. Less์—์„œ๋Š” ํ•„์š”ํ•œ ๊ธฐ๋Šฅ("์‚ฌ์šฉ ํ›„ ์ •์˜")์ด Less ๋ณ€์ˆ˜๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ด๋ฏธ ์ œ๊ณต๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿฐ ๊ฒƒ์€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋™์ผํ•œ ๋ณ€์ˆ˜๋ฅผ ๋‘ ๋ฒˆ ์ •์˜ํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ์„ ์–ธ์ด ์šฐ์„  ์ ์šฉ๋˜๋ฉฐ ์ „์ฒด ๋ฒ”์œ„์—์„œ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์€ ๋ณ€์ˆ˜๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์„ ์–ธํ•˜๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋’ค์— ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.๋ฆฌ์Šค

<strong i="7">@width</strong>: 0;
.mixin {
  width: @width;
}

user.less:

<strong i="11">@import</strong> "library.less"; //first declaration of <strong i="12">@width</strong>
<strong i="13">@width</strong>: 1; //this will override <strong i="14">@width</strong> defined previously
.class {
  .mixin();
}

๋‹ค์Œ์œผ๋กœ ์ปดํŒŒ์ผ:

.mixin {
  width: 1;
}
.class {
  width: 1;
}

PR์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์†”๋ฃจ์…˜์€ ์šฐ๋ฆฌ๊ฐ€ ์†Œ๋น„ํ•  ๊ฒƒ์ด ํ•œ ๊ฐ€์ง€ ๋˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ž‘์€ ๊ฒƒ์ด๋ผ๋ฉด ์‹คํ–‰ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ์†”๋ฃจ์…˜์ด ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ์— ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ํด๋ž˜์Šค ๊ณ„์ธต์œผ๋กœ ๊ตฌํ˜„๋œ ๊ตฌ์„ฑ ์š”์†Œ์˜ ํฐ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ํ…Œ๋งˆ์˜ ์ž์ฒด ํŒŒ์ผ์— ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ์— ๋Œ€ํ•œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์—ฌ๊ธฐ์—์„œ ์ด ๋ณ€์ˆ˜๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๋Š” ํ…Œ๋งˆ๋ฅผ "ํŒŒ์ƒ"ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ํ•„์š”์— ๋”ฐ๋ผ ํ…Œ๋งˆ๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ณ€์ˆ˜๋Š” ์ข…์ข… ๋‹ค๋ฅธ ๋ณ€์ˆ˜์—์„œ "ํŒŒ์ƒ"๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋ˆˆ์— ๋„๋Š” ๊ฒƒ์€ ๋ฒ ์ด์Šค ์ปฌ๋Ÿฌ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ…Œ๋งˆ ๋ฐ ๊ณ ์œ ํ•œ ์ƒ์† ๋™์ž‘๊ณผ ๊ฒฐํ•ฉ๋œ ๊ณต๊ฒฉ์ ์ธ ๋ณ€์ˆ˜ ๊ฐ’ ์ „ํŒŒ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑ ์š”์†Œ์˜ ๋Œ€๊ทœ๋ชจ ํด๋ž˜์Šค ๊ณ„์ธต ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋Œ€์•ˆ์„ ๋…ผ์˜ํ•˜๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„์„ ํ• ์• ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ฐ€์žฅ ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์€ ๋ณ€์ˆ˜๋ฅผ "!default"(Sass ์šฉ์–ด๋กœ)๋กœ _ํ•ญ์ƒ_ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ์ด ๊ฐ’์ด ์ถ”๊ฐ€ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๊ธฐ ์ „์— ๋จผ์ € ๋“ค์–ด๊ฐ€์„œ ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ํƒ€์ด๋ฐ์„ ๊ด€๋ฆฌํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ชจ๋“  ํ…Œ๋งˆ์˜ ๋ชจ๋“  ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ํ•ญ์ƒ ํ•ด๋‹น๋˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„์—์„œ ์ œ์•ˆํ•œ ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ตฌ๋ฌธ ๋ฌธ์ œ๋Š” ์ƒ๋‹นํ•œ ๋ถ€๋‹ด๊ณผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

๊ณ„์†ํ•˜๋ฉด์„œ Less์— ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์šฐ๋ฆฌ์˜ (๋น„์ •์ƒ์ ์œผ๋กœ?) ๋Œ€๊ทœ๋ชจ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์–ธ์–ด/๊ธฐ๋Šฅ ์„ธํŠธ๋ฅผ ํ™•์žฅํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹น์‹ ์ด ์ด๊ฒƒ์„ ๋ณ‘ํ•ฉํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜๊ฑฐ๋‚˜ ๋ณธ์งˆ์ ์œผ๋กœ ๋” ์„ ์–ธ์ ์ธ ๋ช‡ ๊ฐ€์ง€ ๋Œ€์•ˆ์„ ์ œ๊ณตํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋ฒ”์œ„ ํŠธ๋ฆญ์„ ์•…์šฉํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ์šฐ๋ฆฌ์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์‹œ๊ฐ„๊ณผ ๋ฐฐ๋ ค์— ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

์ŠคํŠธ๋ ˆ์ดํŠธ ํด๋ž˜์Šค ๋Œ€์‹  ๋ฏน์Šค์ธ์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ธฐ๋ณธ ์Šคํƒ€์ผ์‹œํŠธ ๋˜๋Š” ๋‹ค๋ฅธ ํŒŒ์ƒ ํ…Œ๋งˆ์—์„œ ๋ณ€์ˆ˜๋ฅผ ๋‚˜์ค‘์— ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ ๊ฐ€์ ธ์˜จ ํ›„ ๊ทธ๋ฆฌ๋“œ์˜ ๊ฑฐํ„ฐ ๋„ˆ๋น„์™€ ๊ฐ™์€ ๊ฒƒ์„ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ์„œ๋Š” ๋ณ€์ˆ˜์— ๋Œ€ํ•ด์„œ๋งŒ ์ด์•ผ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๊ธฐ๋ณธ ์Šคํƒ€์ผ์‹œํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ…Œ๋งˆ๋‹น ํด๋ž˜์Šค๋‹น ํ•˜๋‚˜์”ฉ ์žˆ์Šต๋‹ˆ๋‹ค. :)

๊ท€ํ•˜์˜ ์ œ์•ˆ์„ ๋”ฐ๋ฅด์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์˜ˆ๋ฅผ ๋“ค์–ด ํ…Œ๋งˆ ๋ณ€์ˆ˜ ํŒŒ์ผ ์ค‘ ํ•˜๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

$panel-base-color: $neutral-light-color !default;
$panel-header-color: $base-color !default;
$panel-frame-border-width: 1px !default;
$panel-header-font-size: round($font-size * 1.15) !default;
$panel-body-border-color: $neutral-dark-color !default;

$panel-light-header-color: #000 !default;
$panel-light-header-background-color: #fff !default;
$panel-light-tool-background-image: 'tools/tool-sprites-dark' !default;
$panel-light-body-border-color: $neutral-dark-color !default;
$panel-ignore-frame-padding: true !default;

์ด ํŒŒ์ผ์€ 4๊ฐœ์˜ ๊ธฐ๋ณธ ํ…Œ๋งˆ ์ฒด์ธ์ด ์žˆ๋Š” ํ…Œ๋งˆ์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ํŒจ๋„ ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋ณธ ํ…Œ๋งˆ์—๋Š” ํŒจ๋„์— ๋Œ€ํ•œ ๊ณ ์œ ํ•œ ๋ณ€์ˆ˜ ๊ฐ’์ด ์žˆ์ง€๋งŒ ๋จผ์ € ๋กœ๋“œ๋˜๋ฏ€๋กœ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ํ…Œ๋งˆ๊ฐ€ ์ด ํ…Œ๋งˆ์—์„œ ํŒŒ์ƒ๋˜๊ณ  ๊ณ ์œ ํ•œ ๊ฐ’์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ํ•œ.

์ด ํŒจํ„ด์ด _๋งŽ์ด_๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค:)

์ข‹์Šต๋‹ˆ๋‹ค. ์™œ ๋ฉ”์ธ less ์‹œํŠธ์—์„œ @panel-base-color ๋ฅผ ์žฌ์ •์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? LESS ๋ณ€์ˆ˜๋Š” ์ „์—ญ์ ์ด๋ฏ€๋กœ ๋งˆ์ง€๋ง‰์— ๋ฐœ์ƒํ•˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ์Šน์ž์ž…๋‹ˆ๋‹ค.

<strong i="7">@import</strong> 'theme.less';

@panel-base-color: red;

์ด์ œ ํ…Œ๋งˆ์— ์‚ฌ์šฉ๋œ ๋ชจ๋“  ํ•ญ๋ชฉ์ด ์žฌ์ •์˜๋ฉ๋‹ˆ๋‹ค. ์•„๋ฌด๋„ ์ด๊ฒƒ์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์ฒด์ธ์—์„œ ์žฌ์ •์˜ํ•˜์ง€ ์•Š์œผ๋ฉด ์›๋ž˜ ์„ค์ •๋˜์–ด ์žˆ๋˜ ๊ฒƒ์ด ๊ธฐ๋ณธ๊ฐ’์ด ๋ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” "๋ฉ”์ธ ๋ฆฌ์Šค ์‹œํŠธ"๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. :) ์—ฌ๋Ÿฌ๋ถ„์˜ ๋„์›€๊ณผ ์ œ์•ˆ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด๋ถ€์ ์œผ๋กœ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋งŽ์€ ๋…ผ์˜๊ฐ€ ์žˆ์—ˆ๊ณ  ์ž ์‹œ ๋™์•ˆ ์ง„ํ–‰๋˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ์ œ์•ˆํ•œ ๋Œ€๋กœ ๊ธฐ๋ณธ ๋ณ€์ˆ˜ ์„ค์ •์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ Sass์— ์žˆ์œผ๋ฉฐ ๋ณต์žก์„ฑ์„ ์ค„์ด๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ํ…Œ๋งˆ๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.

์ด ๋ชจ๋“  ๊ฒƒ์ด ์ด ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋‚˜ ์œ ์‚ฌํ•œ ํŒŒ์ƒ ์ƒํ’ˆ์ด ๋ฐ›์•„๋“ค์—ฌ์งˆ ๊ฒƒ์ด๋ผ๋Š” ์˜๋ฏธ์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋ถˆ์พŒํ•œ ๊ฒฝ์šฐ ๊ตฌ๋ฌธ์„ ์กฐ์ •ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” "๋ฉ”์ธ๋ฆฌ์Šค ์‹œํŠธ"๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค :)

์œ„์˜ ๋‹ต๋ณ€์—์„œ "๊ท€ํ•˜์˜ ๊ธฐ๋ณธ ์‹œํŠธ๊ฐ€ ์ ์€ ์‹œํŠธ"๋ฅผ "์‚ฌ์šฉ์ž์˜ ์‹œํŠธ๊ฐ€ ์ ์€ ์‹œํŠธ ์ค‘ ํ•˜๋‚˜"๋กœ ๋ฐ”๊พธ๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ SASS !default (์–ด๋–ค ๊ตฌ๋ฌธ์ด๋“  ๊ฐ„์—)๋Š” LESS์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฐœ๋ช…๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
@dongryphon , ๋ฌผ๋ก  ํ‹€๋ฆด โ€‹โ€‹์ˆ˜ ์žˆ์ง€๋งŒ @SomMeri ์™€ @Soviut์ด ์ œ์•ˆํ•œ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ด์œ ๋ฅผ ์•„์ง ํŒŒ์•…ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ง๋กœ ํ•˜์ž๋ฉด, ๊ฐ€์ ธ์˜ค์ง€ ์•Š๊ณ  ๋Œ€์‹  ๋ชจ๋“  ๋ณ€์ˆ˜๊ฐ€ ๊ฐ™์€ ์‹œํŠธ์— ์žˆ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์ˆ˜์ž…์ด ํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋‘ ๊ฐœ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์‹œํŠธ์˜ ๋งˆ์ง€๋ง‰ ์„ ์–ธ์ด ์Šน๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

@base-color: green;

div {
    background: @base-color;
}

@base-color: red;

๊ธฐ๋ณธ ์ƒ‰์ƒ์€ ๋งˆ์ง€๋ง‰์— ๋‹ค์‹œ ์„ ์–ธ๋˜๊ธฐ ๋•Œ๋ฌธ์— div์— ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ์ƒ‰์ƒ์€ ๋นจ๊ฐ„์ƒ‰์ด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค.

div {
    background: red;
}

์ด๊ฒƒ์€ ์ด์ „์— ๋‚˜์™”๊ณ , ์‚ฌ์‹ค ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๊ตฌํ˜„๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ์—์„œ ๊ทธ๊ฒƒ์„ ์›ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๋กœ๋ถ€ํ„ฐ ํ’€ ์š”์ฒญ์„ ๋ฐ›์•˜๊ณ  ๋ช‡ ๊ฐ€์ง€ ํ† ๋ก  ํ›„์— ๋™์˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์ ธ์˜ค๊ธฐ ์ „์— ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ดํ›„์— ์žฌ์ •์˜๋ฅผ ์ •์˜ํ•˜๋ฉด ๊ธฐ๋ณธ๊ฐ’์ด ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ€์ ธ์˜จ ํŒŒ์ผ์—์„œ๋„ ์‚ฌ์šฉ ํ›„์— ์ •์˜๋œ ๊ฒฝ์šฐ์—๋„ CSS์™€ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ๋งˆ์ง€๋ง‰ ์ •์˜๋ฅผ ์ทจํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ€์ ธ์˜ค๊ธฐ ํ›„์— ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜(๋˜๋Š” ๊ฐ€์ ธ์˜ค๊ธฐ ํ›„์— ๋ณ€์ˆ˜ ํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ)ํ•˜๋Š” ๊ฒƒ๊ณผ ๋” ์ ์€ ๊ฒƒ์— ๊ตฌ๋ฌธ์„ ์ถ”๊ฐ€ํ•œ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋ฆฌ ํฐ ๋ถ€๋‹ด์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด less์˜ ์žฅ์  ์ค‘ ํ•˜๋‚˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. sass์™€ ๊ฐ™์€ ์–‘์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋” ๊ฐ„๋‹จํ•œ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ JavaScript ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ๋ฐ˜๋Œ€์ง€๋งŒ ๊ทธ ์ด๋ฉด์— ์žˆ๋Š” ์•„์ด๋””์–ด๋Š” CSS์— ๋” ๊ฐ€๊น๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์†Œ๋น„์ž์—๊ฒŒ ์ฃผ๋ฌธ์„ ๊ณ ๋ คํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์€ ์ด์œ ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ๊ฐ•๋ ฅํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜๋ฝํ•˜์ง€๋งŒ ์–ธ์–ด์™€ ๋ณต์žก์„ฑ ํŒฝ์ฐฝ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์—„๊ฒฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

#1109 #1104 #313 ์ฐธ์กฐ

๊ทธ๋ฆฌ๊ณ  ๋ช…ํ™•ํžˆ ํ•˜์ž๋ฉด, ์šฐ๋ฆฌ๋Š” ๋‹จํ˜ธํ•˜๊ฒŒ "์•„๋‹ˆ์˜ค"๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์ด ์ด๋ฏธ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Œ์„ ๋ณด์—ฌ์ฃผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋œ ๋ฌธ์„œ์— ๋ช‡ ๊ฐ€์ง€ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค

์ด๋ฏธ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์œผ๋กœ ์ข…๋ฃŒ("๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•") ๊ธฐ๋Šฅ(http://lesscss.org/features/#variables-feature-default-variables).

_syntax_๊ฐ€ ๊ฒน์น˜๋Š” ๋™์•ˆ SASS๋Š” ์œ„์—์„œ ์•„๋ž˜๋กœ "์‹คํ–‰"ํ•˜์ง€๋งŒ LESS๋Š” ๊ทธ๋ ‡์ง€ ์•Š๊ณ  ๋Œ€์‹  CSS์ฒ˜๋Ÿผ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ํ˜ผ๋ž€์ด ์ž์ฃผ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. LESS๋Š” CSS+(์ถ”๊ฐ€ ๊ธฐ๋Šฅ์ด ์žˆ๋Š” CSS)์™€ ๊ฐ™๊ณ  SASS๋Š” "CSS ๊ตฌ๋ฌธ์ด ์žˆ๋Š” PHP"์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. (ํ•„์š”ํ•œ ๊ฒฝ์šฐ) ๊ทธ ๊ตฌ๋ถ„์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์†Œ๋น„์ž์—๊ฒŒ ์ฃผ๋ฌธ์„ ๊ณ ๋ คํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์€ ์ด์œ ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์šฐ๋ฆฌ๋Š” ๊ฐ•๋ ฅํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜๋ฝํ•˜์ง€๋งŒ ์–ธ์–ด์™€ ๋ณต์žก์„ฑ ํŒฝ์ฐฝ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์—„๊ฒฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋„์„œ๊ด€ ์‚ฌ์šฉ์ž(๋ฐ ์†Œ๋น„์ž)์—๊ฒŒ ๋„์„œ๊ด€ ์ฝ”๋“œ๋ฅผ ์Šค์Šค๋กœ ํŽธ์ง‘ํ•˜์ง€ ๋ง๋ผ๊ณ  ๊ฐ€๋ฅด์น˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. !default ๊ธฐ๋Šฅ์ด ์—†๋‹ค๋Š” ๊ฒƒ์€ ์ด ๋‘ ๊ฐ€์ง€ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ๋˜‘๊ฐ™์ด ๋‚˜์œ imo:

  • ์‚ฌ์šฉ์ž๋Š” ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋ฅผ ํŽธ์ง‘ํ•˜๊ธฐ ์œ„ํ•ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์Šคํƒ€์ผ์‹œํŠธ๋ฅผ ์ง์ ‘ ํŽธ์ง‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์ด๋Š” ์ผ์ข…์˜ ๊ธˆ์ง€๋œ ์ž‘์—…์ด๋ฏ€๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—…๋ฐ์ดํŠธ๋ฅผ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค).
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‘ ๊ฐ€์ง€ ์Šคํƒ€์ผ์‹œํŠธ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ๊ธฐ๋ณธ ๋ณ€์ˆ˜์šฉ์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์‹ค์ œ ๊ทœ์น™์šฉ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์‚ฌ์šฉ์ž๋Š” ์ฒซ ๋ฒˆ์งธ ๋ณ€์ˆ˜๋ฅผ @import ํ•˜๊ณ  ์ž์ฒด ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ ๋‹ค์Œ ๋‘ ๋ฒˆ์งธ ๋ณ€์ˆ˜๋ฅผ @import ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๋‘ ํŒŒ์ผ์„ ๊ฐ™์€ ๋ฒ„์ „์œผ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ์ƒ๊ฐ๋ณด๋‹ค ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค.

sass ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋‹จ์ผ ํŒŒ์ผ๋งŒ ์ œ๊ณตํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

my-color: red;
<strong i="15">@import</strong> "./my-library.less";

๋Œ€์‹ ์—:

<strong i="19">@import</strong> "./my-library-variables.less";
my-color: red;
<strong i="20">@import</strong> "./my-library-rules.less";

์ด ๋ฌธ์ œ๋ฅผ ์žฌ๊ณ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@arcanis ์‚ฌ์‹ค ์™œ ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‘ ๊ฐ€์ง€ ์Šคํƒ€์ผ์‹œํŠธ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ๊ธฐ๋ณธ ๋ณ€์ˆ˜์šฉ์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์‹ค์ œ ๊ทœ์น™์šฉ์ž…๋‹ˆ๋‹ค.
sass ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋‹จ์ผ ํŒŒ์ผ๋งŒ ์ œ๊ณตํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Less์—์„œ๋Š” ์™„์ „ํžˆ ๋™์ผํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋””์ž์ธ์ž…๋‹ˆ๋‹ค.

<strong i="11">@import</strong> "./my-library.less";
@my-color: red;

๋‚˜๋Š” ๋‹น์‹ ์ด ๋‹จ์ˆœํžˆ "Lazy-Loading"์„ ๋†“์น˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (๊ทธ๋ฆฌ๊ณ  ์ •ํ™•ํžˆ ๋™์ผํ•œ ์˜ˆ๊ฐ€ ๋ฌธ์„œ ์—์„œ no, thanks! ~ !default ๋ผ๊ณ  ๋งํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ).

๋‚˜๋Š” ๋‹น์‹ ์ด ๋‹จ์ˆœํžˆ "Lazy-Loading"์„ ๋†“์น˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@seven-phases-max WTF, ๋งž์Šต๋‹ˆ๋‹ค. ์  ์žฅ, ์•„๋งˆ ๋‚ด ์ „์ฒด ๋‹ต์žฅ์„ ์‚ญ์ œํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋ฐฉ๊ธˆ ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค). ๋ถ€ํŠธ์ŠคํŠธ๋žฉ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ณ  ํŠน์ • var๋ฅผ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋งํ•˜๋ฉด์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋‹น์‹ ์„ ๋ฏฟ์ง€ ์•Š์•˜๊ณ  ๊ทธ๊ฒƒ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด ์ž์‹ ์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ด๊ฑธ ์–ด๋–ป๊ฒŒ ๋†“์ณค์–ด?? ์‚ฌ์šฉ์ž ์ •์˜๋ฅผ ํฌํ•จํ•˜์—ฌ Bootstrap์—์„œ ๋ณธ ๋ชจ๋“  ๊ธฐ์‚ฌ์—์„œ variables.less ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๊ณ  ๊ณ ์œ ํ•œ ๊ฐ’์„ ์„ค์ •ํ•˜๋„๋ก ๊ถŒ์žฅํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋” ๋งŽ์€ ๋ณ€์ˆ˜๊ฐ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ถ”๊ฐ€๋  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž„ํฌํŠธ ์ง์ „์— ์…€๋ ‰ํ„ฐ๊ฐ€ ์ถœ๋ ฅ๋˜๊ณ  ์žˆ๋‹ค๋Š” ์ธ์ƒ์„ ๋ฐ›์€ ๊ฒƒ ๊ฐ™์•„์š”. ๋ณ€์ˆ˜๊ฐ€ ํ•ญ์ƒ ์ด๋Ÿฐ ์‹์œผ๋กœ "์ง€์—ฐ ๋กœ๋“œ"๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ Less์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ๋†“์น˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋‹จ์ผ ๊ธฐ๋Šฅ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์–ธ๊ธ‰ํ•˜๋Š” Less or Less ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ์Šค๋ ˆ๋“œ์— ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ๊ณผ ๋ฌธ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์‹ค์ œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ด๊ฒƒ์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๊ฐ€ ์ฆ‰์‹œ ๋ช…ํ™•ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์ด ๋‹จ์ˆœํžˆ ๋‚˜์ค‘์— ์„ค์ •ํ•˜์—ฌ ์ด์ „์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋งํ•˜๋Š” ์ค„ ์•Œ์•˜๋Š”๋ฐ ์ด์ „์— ๊ฐ€์ ธ์˜จ ๋ฌธ์„œ์˜ ๋ณ€์ˆ˜ ํ‰๊ฐ€์— ์˜ํ–ฅ์„ ์ค„ ์ค„์€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์ด๊ฒƒ์„ ์–ป์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ฏฟ๊ธฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด๊ฐ€ ์ ์€ ๋ฌธ์„œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ๋ณ€๊ฒฝํ•˜๋ฉฐ ์ถœ๋ ฅ์„ ๋ณด์—ฌ์ฃผ์ง€ ์•Š๋Š” ๋ฌธ์„œ์— ์•ฝ๊ฐ„์˜ ์–ธ๊ธ‰์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Less์—์„œ !default ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์š”์ฒญ์ด ๋งŽ์€ ์ด์œ ๋Š” ์ด ๊ธฐ๋Šฅ์„ ์ง๊ฐํ•˜๊ฑฐ๋‚˜ ๋ฌธ์„œ์˜ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ(์ €๋ฅผ ํฌํ•จํ•˜์—ฌ)์—์„œ ์ดํ•ดํ•˜๋Š” ์‚ฌ๋žŒ์ด ๊ฑฐ์˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ์†Œํ•œ @seven-phases-max์—์„œ ๋‹ค์‹œ ์„ค๋ช…ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด๋Ÿฐ. ๊ธ€์Ž„, ๋‹น์‹  ๋ง์ด ๋งž์•„. ๋‚˜๋„ ๋ฌธ์„œ๋ฅผ ์ž˜๋ชป ์ดํ•ดํ–ˆ์–ด, ๋‚ด ๋‚˜์œ!

@Soviut ๋‹น์‹ ์€ ๋นŒ์–ด๋จน์„ ์ฒœ์žฌ์ž…๋‹ˆ๋‹ค! ๋ณ€์ˆ˜ ์„ ์–ธ์ด SASS/LESS์—์„œ ๊ทธ๋ ‡๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์ „ํ˜€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋‚˜๋Š” ์ด๊ฒƒ์ด ๋‚ด๊ฐ€ Less์—์„œ ์“ด ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ๋“ค์—์„œ ๋ช…๋ฐฑํ•œ ํ–‰๋™์ด ์•„๋‹ˆ์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์— ์—ฌ์ „ํžˆ ์ด๋งˆ๋ฅผ ์น˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๋ฌธ์ œ๋Š” ๋‚ด๊ฐ€ ๊ทธ๊ฒƒ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ž‘์„ฑํ•œ ๋นˆ์•ฝํ•œ ์˜ˆ์ œ ๊ธฐ์‚ฌ๋ฅผ ๋ณธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์ฐธ๊ณ : @spikesagal ๊ท€ํ•˜์˜ ์ง„์ˆ : "๋ณ€์ˆ˜ ์„ ์–ธ์ด SASS/LESS์—์„œ ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ์ „ํ˜€ ๋ชฐ๋ž์Šต๋‹ˆ๋‹ค." -- ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ, ๋ณ€์ˆ˜์˜ ๋™์ž‘์€ ๋‘ ์–ธ์–ด ๊ฐ„์— ๋™์ผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. SASS์™€ LESS๋Š” ๋งค์šฐ ๋‹ค๋ฅด๊ฒŒ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์€ Sass๋กœ ์ด๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— BS4์—์„œ ์ด ๊ธฐ๋Šฅ์„ ์ฃฝ์ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค... :-1: ๊ทธ ์ด๋™์— ๋Œ€ํ•ด ์—ฌ์ „ํžˆ ๊ฝค ์Šฌํ”•๋‹ˆ๋‹ค.

๋” ๋งŽ์€ !default ๋ณ€์ˆ˜๋ฅผ ์œ„ํ•œ ์‹ธ์›€์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. [twbs/bootstrap#17418]

๊ธ€์Ž„, ๊ทธ๋“ค์€ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  SCSS ์†Œ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ Less ๊ธฐ๋Šฅ์„ ์ฃฝ์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. (๊ธฐ์ˆ ์ ์œผ๋กœ๋Š” "๊ธฐ๋Šฅ"(์ผ์ข…์˜ "ํ•ฉ์„ฑ๋œ ๋™์ž‘"๊ณผ ๊ฐ™์€)์ด ์•„๋‹ˆ๋ผ ๊ธฐ๋ณธ ์†์„ฑ/๊ฒŒ์œผ๋ฅธ ํ‰๊ฐ€์˜ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค). BS์˜ Less ๋ฒ„์ „์ด ์žˆ๊ณ (๊ธฐ์—ฌํ•  ์˜์‚ฌ๊ฐ€ ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์ˆ˜์˜ ๋ฌธ์ œ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค), ์ตœ์†Œํ•œ ํ•˜๋‚˜์˜ ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ํ•œ - ํ•ญ์ƒ ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž˜. bootstrap์˜ ๊ณต์‹ v4-alpha๊ฐ€ Sass๋กœ ์˜ฎ๊ฒจ์กŒ์Šต๋‹ˆ๋‹ค. ์ ์–ด๋„ ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๊ธฐ๋กœ๋Š” ๊ณต์‹ ๋ฌธ์„œ์—์„œ๋Š” ๋œ ์ฃฝ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Sass์—๋Š” ์ง€์—ฐ ๋กœ๋“œ ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ๊ฒƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ง€์›๋„ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ !default๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์–ด๋–ค ์˜๋ฏธ์—์„œ๋Š” "์˜ค, ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์ด ์™ธ๋ถ€์—์„œ ์šฐ๋ฆฌ์˜ ๋ณ€์ˆ˜๋ฅผ ํ•œ ๋ฒˆ๋งŒ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๊ณ , ์šฐ๋ฆฌ๊ฐ€ ํ—ˆ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์šฐ๋ฆฌ๊ฐ€ ๋‹น์‹ ์—๊ฒŒ ๋‹จ์ˆœํžˆ !default๋ฅผ ์ƒ๋žตํ•จ์œผ๋กœ์จ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ๋‹น์‹ ์€ ๊ฑฐ์˜ ์—‰๋ง์ด ๋˜์–ด ํŒŒ์ผ์— ์žˆ๋Š” ์ „์ฒด darn ์„ ํƒ๊ธฐ๋ฅผ ์žฌ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜๋ฆฌํ•˜์‹ญ์‹œ์˜ค."

Sass์—๋Š” ์ง€์—ฐ ๋กœ๋“œ ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ๊ฒƒ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ง€์›๋„ ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค.

๊ธ€์Ž„, ์ด๊ฒƒ์€ ๋‹จ์ง€ "๋ถ€ํŠธ์ŠคํŠธ๋žฉ์—์„œ ์ฃฝ์ธ๋‹ค"๋Š” ์˜๋ฏธ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค(์ด๋Š” ๋ถ„๋ช…ํžˆ ์ด ์Šค๋ ˆ๋“œ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. BS์˜ Less ๋ฒ„์ „์ด ์—†๋Š” ํ•œ _this_ ์ €์žฅ์†Œ์— ์žˆ๋Š” ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๊นŒ?).

์ด ํ† ๋ก ์€ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ์—์„œ ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒƒ์— ๊ด€ํ•œ ๊ฒƒ์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์—...

์šฐ๋ฆฌ๋Š” ๋” ์ ์€ ๊ฒƒ์„ ๊ณ ์ˆ˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค :smile:

์›๋ž˜ ์–ธ๊ธ‰๋œ ๋”œ๋ ˆ๋งˆ์— ๋Œ€ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ์ˆœํ™”๋œ ์˜ˆ๋ฅผ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

  1. ๋‹ค์Œ๊ณผ ๊ฐ™์€ h1์˜ ๊ธ€๊ผด ํฌ๊ธฐ๋ฅผ ์ •์˜ํ•˜๋Š” ๋” ์ ์€ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    <strong i="8">@font_size__h1</strong> = 30px;
  2. @font_size__h1 ์„ ์–ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ณ„๋„์˜ LESS ํŒŒ์ผ์ด ํฌํ•จ๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š” <strong i="12">@import</strong> (reference) "path/to/file.less"; ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ ์—†์Šต๋‹ˆ๋‹ค. ์ด์ œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ์ด์ œ @font_size__h1 ๊ฐ€ ์–ด๋””์—๋„ ์ •์˜๋˜์ง€ ์•Š์€ ์ƒˆ ์‚ฌ์ดํŠธ๋กœ "ํ”Œ๋Ÿฌ๊ทธ์ธ"์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ " @font_size__h1 ๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์œผ๋ฉด ํ•ด๋‹น ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ณ  ์ •์˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์—ฌ๊ธฐ์— ์ •์˜ํ•œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค."๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ณผ ์ˆ˜์žˆ๋Š” ํ•œ ํ•ญ๋ชฉ 3์€ ํ˜„์žฌ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

@theMikeD

๋‚ด๊ฐ€ ๋ณผ ์ˆ˜์žˆ๋Š” ํ•œ ํ•ญ๋ชฉ 3์€ ํ˜„์žฌ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

<strong i="10">@import</strong> "path/to/file.less";
<strong i="11">@import</strong> "here.less"; // if it's not defined <elsewhere>, then use the value I define <here>
<strong i="12">@import</strong> "elsewhere.less";

๋ฌผ๋ก  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<strong i="16">@import</strong> "path/to/file.less"; // <- define default value there
@font-size-h1: foo;          // if it's not defined here then use the value defined above

์ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ http://lesscss.org/features/#variables -feature-default-variables์™€ ๋™์ผํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค.

์˜ˆ, ์Šค๋ ˆ๋“œ๋ฅผ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์˜ˆ์— ๋‚ด ์งˆ๋ฌธ์ด ๊ฑฐ๊พธ๋กœ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๊ฐ€ ๋ฌป๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
@import "๊ฒฝ๋กœ/to/file.less"; // <- ๊ฑฐ๊ธฐ์— ๊ธฐ๋ณธ๊ฐ’์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
@ font-size-h1: foo; // ์—ฌ๊ธฐ์— ์ •์˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์œ„์— ์ •์˜๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ๊ณผ ๋ฐ˜๋Œ€์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ path/to/file.less ์˜ @font-size-h1 ๊ฐ’์„ ๋ฌด์—‡์ด๋“  ์ƒ๊ด€์—†์ด ๋กœ์ปฌ ๊ฐ’์œผ๋กœ ๋ฎ์–ด์”๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ๋˜๋Š” ๋กœ์ปฌ ํŒŒ์ผ์˜ ๊ฐ’์ž…๋‹ˆ๋‹ค.
a) path/to/file.less ๊ฐ€ ๋กœ๋“œ๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜
b) '@ font_size__h1 is not set in path/to/file.less`์˜ ๊ฐ’

IOW @font-size-h1: foo; ์˜ ๋กœ์ปฌ ๊ฐ’์€ ํ•ญ์ƒ ๋กœ์ปฌ ํŒŒ์ผ์— ์žˆ์ง€๋งŒ path/to/file.less ์— ์„ค์ •๋œ ๊ฒฝ์šฐ ์žฌ์ •์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ์–ด์ œ ๋ฐค์— ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๋จผ์ € ๋กœ์ปฌ ๊ฐ’์„ ํ• ๋‹นํ•œ ๋‹ค์Œ @import ๋ฌธ์„ ํŒŒ์ผ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์ด ์•„๋‹Œ ๋ ๋ถ€๋ถ„์— ๋‘๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐœ๊ฒฌ๋˜๋ฉด ๋กœ์ปฌ ๊ฐ’์„ ๋ฎ์–ด์”๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ๋‚ด๊ฐ€ ๋ฌป๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

๋ณด๊ธฐ๋ฅผ ์ƒˆ๋กœ ๊ณ ์น˜๋ ค๋ฉด ๋œ ๋ณ€์ˆ˜ ๊ธฐ๋ณธ ์‚ฌํ•ญ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

(์™œ๋ƒํ•˜๋ฉด ๋‹น์‹ ์€ ๋ช…๋ นํ˜• C/PHP์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋“  ๊ฒƒ์„ ์ƒ๊ฐํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ Less/CSS์—์„œ๋Š” ์™„์ „ํžˆ "์„ ์–ธ์  ๊ฑฐ๊พธ๋กœ"์ž…๋‹ˆ๋‹ค.)
์ง€๋‚œ ๋ช‡ ๋…„ ๋™์•ˆ ์ฃฝ์„ ๋•Œ๊นŒ์ง€ ์ด์•ผ๊ธฐ๋˜์–ด ์™”์œผ๋ฉฐ !default ๋Š” ๊ธฐ๋ณธ Less ๋ณ€์ˆ˜ ์žฌ์ •์˜์™€ ๋น„๊ตํ•  ๋•Œ _์•„๋ฌด๊ฒƒ๋„_ ์ƒˆ๋กœ์šด ๊ฒƒ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๊ฐ„. (์šฐ๋ฆฌ๋Š” ์ด์ „์— ์—ฌ๋Ÿฌ ๋ฒˆ ๊ฐ€๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ Less์—์„œ !default ์— ๋Œ€ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์ฐพ์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ Less ๊ฐ€๋ณ€ ์˜๋ฏธ๋ก ์— ๋Œ€ํ•œ ๊ทธ์˜ ์˜คํ•ด ์™ธ์—๋Š” ์•„๋ฌด ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.)

๋‚ด๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ๋˜๋Š” ๋กœ์ปฌ ํŒŒ์ผ์˜ ๊ฐ’์ž…๋‹ˆ๋‹ค.
a) path/to/file.less ๊ฐ€ ๋กœ๋“œ๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜
b) @ font_size__h1 path/to/file.less ์— ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๋‹จ์ˆœํžˆ ๋ฐ˜๋Œ€์ž…๋‹ˆ๋‹ค.

@font-size-h1: foo;
<strong i="27">@import</strong> "path/to/file.less"; 

ํƒ€๋‹ค!

...๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ๋‚ด๊ฐ€ ์ฐฉ๋ฅ™ ํ•œ ๊ณณ์ž…๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์“ด ๊ธฐ์‚ฌ๋ฅผ ์ œ์•ˆํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ @seven-phase-max๊ฐ€ ๋งํฌ๋œ ๊ธฐ์‚ฌ๋ฅผ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ๐Ÿ˜„ ์šฐ๋ฆฌ๋ฅผ ๋ฏฟ์œผ์„ธ์š”. ๋‹น์‹ ์ด ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์€ ์ด๋ฏธ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค! ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ป๊ฒŒ/์™œ ์กด์žฌํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋ ค๋ฉด Less์˜ ๋ณ€์ˆ˜ ํ‰๊ฐ€๋ฅผ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๊ทธ๋ฆฌ๋“œ์ธ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ ์š”์†Œ์—๋Š” ๊ตฌ์„ฑ ์š”์†Œ ํŒจํ‚ค์ง€์— ์˜ํ•ด ์ •์˜๋œ ๊ธฐ๋ณธ ์Šคํƒ€์ผ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์™ธ๋ถ€์—์„œ ํŠน์ • ๋ณ€์ˆ˜๊ฐ€ ์ด๋ฏธ ์ •์˜๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•ฑ๋ฆฌ์Šค
/grid/grid.less

๊ทธ๋ฆฌ๋“œ๋Š” ๊ตฌ์„ฑ ์š”์†Œ์ด๋ฏ€๋กœ ์—ฌ๊ธฐ์— ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ grid.less ํŒŒ์ผ ๋’ค์— ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์–ด๋ฒ„๋ฆฌ์‹ญ์‹œ์˜ค.
์ด ๋ฌธ์ œ๋ฅผ ์–ผ๋งˆ๋‚˜ ์ ๊ฒŒ ๋‹ค๋ฃจ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. Scss๊ฐ€ ์ด ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐ๋Š” ๊ทธ๋Ÿด๋งŒํ•œ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@geri777

๊ทธ๋Ÿฌ๋‚˜ ์™ธ๋ถ€์—์„œ ํŠน์ • ๋ณ€์ˆ˜๊ฐ€ ์ด๋ฏธ ์ •์˜๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Less๋Š” CSS์ฒ˜๋Ÿผ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

.css {  
  --color: blue;
  color: var(--color);  // --color will be red
  --color: red;
  border-color: var(--color);  // --color will still be red, red is the scope's final value
}

.less {  
  <strong i="10">@color</strong>: blue;
  color: @color;  // <strong i="11">@color</strong> will be red
  <strong i="12">@color</strong>: red;
  border-color: @color;  // <strong i="13">@color</strong> will still be red, red is the scope's final value
}
````

Scss, instead, doesn't mimic CSS evaluation and instead evaluates more like, say, PHP.

```scss
.scss {  
  $color: blue;
  color: $color;  // $color will be blue
  $color: red;
  border-color: $color;  // $color will be red
}

๋”ฐ๋ผ์„œ Sass/SCSS์—์„œ ๋ฃจํŠธ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์žฌ์ •์˜ํ•˜๋ ค๋ฉด ๋‘ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ชจ๋“  ๋ณ€์ˆ˜ ์„ ์–ธ์— !default ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ์ด๋Ÿฌํ•œ ๊ธฐ๋ณธ ์„ ์–ธ ์•ž์— ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์‚ฝ์ž…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—์„œ์™€ ๊ฐ™์ด:

// main.scss
<strong i="22">@import</strong> "overrides.scss";
<strong i="23">@import</strong> "library.scss";

// overrides.scss
$color: red;

// library.scss
$color: blue !default;

.scss {
  color: $color;
}

Less์—์„œ๋Š” ํ…Œ๋งˆ ์ง€์ •์ด ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค. (์ผ๋ฐ˜์ ์œผ๋กœ) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•ด ์•„๋ฌด ๊ฒƒ๋„ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ์žฌ์ •์˜๋ฅผ ๋’ค์— ๋‘๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

// main.less
<strong i="27">@import</strong> "library.less";
<strong i="28">@import</strong> "overrides.less";

// overrides.less
<strong i="29">@color</strong>: red;

// library.less
<strong i="30">@color</strong>: blue;

.less {
  color: @color;
}

๋”ฐ๋ผ์„œ Less๋Š” ํ•ญ์ƒ ์ตœ์ข… ๊ฐ’์„ ์ˆ˜๋ฝํ•˜๋ฏ€๋กœ !default ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

CSS์˜ ์บ์Šค์ผ€์ด๋“œ์™€ ๊ฐ™์€ Less ํ‰๊ฐ€๋ฅผ ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ƒฅ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์ข… ์„ ์–ธ์ด ์ด๊น๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰