Less.js: ์œ ํšจํ•œ ์‚ฌ์šฉ์ž ์ง€์ • ์†์„ฑ ๊ฐ’์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ (์˜ˆ : @apply polyfill)

์— ๋งŒ๋“  2015๋…„ 10์›” 21์ผ  ยท  34์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: less/less.js

์ด ์ฝ”๋“œ๋Š” ๋‹ค์Œ์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.

paper-drawer-panel {
  --paper-drawer-panel-left-drawer: {
    background-color: red;
  };
}

์†์„ฑ ๊ฐ’์˜ ์ค‘๊ด„ํ˜ธ๋Š” ํŒŒ์„œ๋ฅผ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.

Polymer์—์„œ ์‚ฌ์šฉํ•˜๋Š” @apply ๊ตฌ๋ฌธ์„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.
https://www.polymer-project.org/1.0/docs/devguide/styling.html#custom -css-mixins

๋˜ํ•œ ์‹œ๋„ :

paper-drawer-panel {
  <strong i="14">@ruleset</strong>: {
    prop: value;
  };
  --paper-drawer-panel-left-drawer: %(~"%d", @ruleset);
}

ํŒŒ์„œ๋ฅผ ์ค‘๋‹จํ•˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ ์ „๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

paper-drawer-panel {
  --paper-drawer-panel-left-drawer: ;
}

์ด๋Š” ๋ถ„๋ช…ํžˆ ๋ฐ”๋žŒ์งํ•œ ํ–‰๋™์ด ์•„๋‹™๋‹ˆ๋‹ค.

bug feature request

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

์ด์— ๋Œ€ํ•œ ์‚ฌ์–‘์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ฆฌ ํ•„์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. Chrome์—์„œ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. Polymer๋Š” ์ด๋ฏธ 1.0 ๋ฆด๋ฆฌ์Šค์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์›น ์‚ฌ์ดํŠธ๋Š” ์ด๋ฏธ Polymer๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Less๊ฐ€ ์ตœ์†Œํ•œ์˜ ์ˆ˜์ค€์—์„œ ๊ตฌ๋ฌธ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ์™„๋ฒฝํ•˜๊ฒŒ ํ•ฉ๋ฆฌ์ ์ธ ๊ธฐ๋Œ€๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ ์€ @apply ์ด๋ฏธ --foo: bar; ๋ฐ var(--foo) ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค. ๋น ์ง„ ์œ ์ผํ•œ ๊ฒƒ์€ Less๊ฐ€ --foo: { property: value; } ์˜ { ... } ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ CSS ๋ธ”๋ก์— ์ฃผ์–ด์ง„ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ธฐ๋ณธ ์ฒ˜๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋“œ ์Šคํ†ฑ์— ๋„๋‹ฌํ•˜๊ณ  ๊ตฌ๋ฌธ ๋ถ„์„ ์˜ค๋ฅ˜๋ฅผ ๋˜์ง€๋Š” ๋Œ€์‹ .

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

๋น„ CSS ๊ตฌ๋ฌธ ์ง€์›์€ Less ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚ด -1.

์–ด๋Š ์ชฝ์ด๋“  ์ด์Šค์ผ€์ดํ”„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถœ๋ ฅ์— ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ :

xpaper-drawer-panel {
  --paper-drawer-panel-left-drawer: ~"{background-color: red;}";
}

๋˜๋Š” ๋” ํ—˜๋‚œํ•œ ์—ฌ๋Ÿฌ ์ค„ ๋ฐฉ์‹์œผ๋กœ :

paper-drawer-panel {
  -:~";--paper-drawer-panel-left-drawer: {";
    background-color: red;
    color: blue;
  -:~";}";
}

๋” ๋ณต์žกํ•œ ์ƒํ™ฉ์—์„œ๋Š” ํ•ญ์ƒ <strong i="13">@import</strong> (inline) ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.


%(~"%d", @ruleset); -์•„๋‹ˆ์š”, Less ๋ณ€์ˆ˜๋Š” ๋งคํฌ๋กœ๊ฐ€ ์•„๋‹ˆ๋ฉฐ ์ปจํ…์ŠคํŠธ์— ๊ด€๊ณ„์—†์ด ํ™•์žฅ๋˜์ง€ ์•Š์œผ๋ฉฐ ํŠนํžˆ ์ด๋ฆ„์ด ์ง€์ •๋˜์ง€ ์•Š์€ ๊ทœ์น™ ์ง‘ํ•ฉ์˜ ๊ฒฝ์šฐ ์œ ์ผํ•œ ์ ์ ˆํ•œ ๊ตฌ๋ฌธ์€ ๊ทœ์น™ ์ง‘ํ•ฉ ๋ณธ๋ฌธ ๋‚ด์—์„œ @ruleset() ์ด๊ณ  _not_ as ์†์„ฑ ๊ฐ’.

๋น„ํ‘œ์ค€ ๊ตฌ๋ฌธ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ง€์›๋˜์ง€ ์•Š์•„์•ผํ•œ๋‹ค๋Š” ๋ฐ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์€ LESS๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ Polymer์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ๋‹ต์žฅ์„ ๋ณด๋‚ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. : +1 :

์ด๊ฒƒ์ด @ seven-phases-max ๊ฒฐ์ •์— ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ @apply ๊ทœ์น™์— ๋Œ€ํ•œ ๊ณต๊ฐœ ์‚ฌ์–‘์ด ์žˆ์Šต๋‹ˆ๋‹ค. http://tabatkins.github.io/specs/css-apply-rule/ #issue -882293bd.

๋˜ํ•œ https://github.com/Polymer/polymer/issues/1373 ์„ ์ฐธ์กฐ

๊ทธ๋ฆฌ๊ณ  SASS๋Š” https://github.com/sass/sass/issues/1128์„ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@ donny-dont ์ฐธ๊ณ  ๋‚˜๋Š” ์•„๋ฌด๊ฒƒ๋„ ๊ฒฐ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค (๋‚˜๋Š” ์ œ์•ˆ์„ ๋‹ซ์ง€ ์•Š์•˜๋‹ค)-๋‚˜๋Š” ๋‹จ์ง€ ๋น„ํ‰๊ฐ€ ์ผ ๋ฟ์ด๋‹ค.

์Œ, Tab Atkins๋Š” _tens_ ๊ฐœ์˜ CSS ํ‘œ์ค€ ์ œ์•ˆ ( "์•„์ด๋””์–ด"๋ผ๊ณ  ํ•จ)์„ ์ƒ์„ฑํ–ˆ์œผ๋ฉฐ Google ์ง์›์ด ๋‚ด์ผ์—๋„์ด๋ฅผ ๋ธŒ๋ผ์šฐ์ €์— ๋ฐ€์–ด ๋„ฃ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์•„์ง CSS ์ดˆ์•ˆ์ด ๋˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋ฉ€์—ˆ์Šต๋‹ˆ๋‹ค (CSS vars ๋Š” ์•ฝ 10 ๋…„ ๋™์•ˆ CSS ์„ธ๊ณ„์— ๋“ค์–ด ์˜ค ์…จ๋‚˜์š”?).

์˜๋ฏธ์— ๋Œ€ํ•ด @ seven-phases-max ์‚ฌ๊ณผํ•ฉ๋‹ˆ๋‹ค. Polymer๊ฐ€ mixin ์ œ์•ˆ์„ ์ถ”์ง„ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ @Jamtis ๊ฐ€ ์‹ค์ œ๋กœ ์ „๋‹ฌํ•˜์ง€ ์•Š์€ ๊ฒƒ์ด ํ˜•์„ฑ๋˜๋ฉด Chrome

์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ํŒŒ์„œ ์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์‹คํ—˜์šฉ ํ”Œ๋ž˜๊ทธ์™€ ๊ฐ™์ด ์ผœ๊ณ  ๋Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์—ฌ๊ธฐ์—์„œ ์ค‘๋ณต ์š”์ฒญ์„ ๋ฆฌ๋””๋ ‰์…˜ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์‹œ ์—ฝ๋‹ˆ ๋‹ค.

/๋ณด๊ฒฐ

์ด์— ๋Œ€ํ•œ ์‚ฌ์–‘์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ฆฌ ํ•„์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. Chrome์—์„œ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. Polymer๋Š” ์ด๋ฏธ 1.0 ๋ฆด๋ฆฌ์Šค์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์›น ์‚ฌ์ดํŠธ๋Š” ์ด๋ฏธ Polymer๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Less๊ฐ€ ์ตœ์†Œํ•œ์˜ ์ˆ˜์ค€์—์„œ ๊ตฌ๋ฌธ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์ด ์™„๋ฒฝํ•˜๊ฒŒ ํ•ฉ๋ฆฌ์ ์ธ ๊ธฐ๋Œ€๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ ์€ @apply ์ด๋ฏธ --foo: bar; ๋ฐ var(--foo) ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค. ๋น ์ง„ ์œ ์ผํ•œ ๊ฒƒ์€ Less๊ฐ€ --foo: { property: value; } ์˜ { ... } ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ CSS ๋ธ”๋ก์— ์ฃผ์–ด์ง„ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ธฐ๋ณธ ์ฒ˜๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋“œ ์Šคํ†ฑ์— ๋„๋‹ฌํ•˜๊ณ  ๊ตฌ๋ฌธ ๋ถ„์„ ์˜ค๋ฅ˜๋ฅผ ๋˜์ง€๋Š” ๋Œ€์‹ .

CSS ๋ณ€์ˆ˜์˜ ์ „์ฒด ์‚ฌ์–‘์ด LESS์—์„œ ์ง€์›๋˜์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค!

@dantman

์ด์— ๋Œ€ํ•œ ์‚ฌ์–‘์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ฆฌ ํ•„์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. Chrome์—์„œ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. Polymer๋Š” ์ด๋ฏธ 1.0 ๋ฆด๋ฆฌ์Šค์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์›น ์‚ฌ์ดํŠธ๋Š” ์ด๋ฏธ Polymer๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ๊ทธ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊ทธ๋‹ค์ง€ ์„ค๋“๋ ฅ์ด์—†๋Š” ์ด์œ ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ฆ‰, Google, Google ๋ฐ Google์ด ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ณณ์—์„œ๋Š” ๊ด€์‹ฌ์ด ๋œจ์ง€ ์•Š์•˜๊ณ  ์–ด๋–ค ์ง•ํ›„๋„ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@ donny-dont

์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ํŒŒ์„œ ์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์‹คํ—˜์šฉ ํ”Œ๋ž˜๊ทธ์™€ ๊ฐ™์ด ์ผœ๊ณ  ๋Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ์ด ์žˆ์ง€๋งŒ ๊ตฌ๋ฌธ ๋ถ„์„ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ์ง์ ‘์ ์ธ ์ง€์›์€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๊ฒƒ์€ ์‚ฌ์†Œํ•œ ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

@dantman
์ด์— ๋Œ€ํ•œ ์‚ฌ์–‘์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋ฆฌ ํ•„์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. Chrome์—์„œ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. Polymer๋Š” ์ด๋ฏธ 1.0 ๋ฆด๋ฆฌ์Šค์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์›น ์‚ฌ์ดํŠธ๋Š” ์ด๋ฏธ Polymer๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ๊ทธ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊ทธ๋‹ค์ง€ ์„ค๋“๋ ฅ์ด์—†๋Š” ์ด์œ ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ฆ‰, Google, Google ๋ฐ Google์ด ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ณณ์—์„œ๋Š” ๊ด€์‹ฌ์ด ๋œจ์ง€ ์•Š์•˜๊ณ  ์–ด๋–ค ์ง•ํ›„๋„ ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

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

๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. Less์˜ ๋ถ„๋ฆฌ ๋œ ๊ทœ์น™ ์ง‘ํ•ฉ๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. Less์— ์ถ”๊ฐ€ ๋œ ๋‹ค๋ฅธ "pass-thru"ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์„ ๋ก€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฐ˜๋“œ์‹œ ๋ฐ˜๋Œ€ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ํ˜„์žฌ Polymer ์ด์ƒ์˜ ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๋ฉด ํšŒ์˜์ ์ž…๋‹ˆ๋‹ค.

CSS ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ๊ณต์‹ ์ง€์›์€ ์—ฌ๊ธฐ์— ๋‚˜์—ด๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. http://caniuse.com/#feat = css-variables

๊ธฐ๋ณธ CSS ๋ณ€์ˆ˜ ์ง€์›์„์œ„ํ•œ ์ตœ์†Œ ๋ธŒ๋ผ์šฐ์ € ๋ฒ„์ „

  • ํฌ๋กฌ 49
  • Android ์šฉ Chrome 51
  • Android ๋ธŒ๋ผ์šฐ์ € 51
  • Android ์šฉ Firefox 47
  • Firefox 31
  • Safari 9.1
  • iOS Safari 9.3
  • ์˜คํŽ˜๋ผ 36
  • ์˜คํŽ˜๋ผ ๋ชจ๋ฐ”์ผ 37

ํด๋ฆฌ ํ•„์ด์—†๋Š” ๊ฒฝ์šฐ ์ด๋Š” ์•ฝ 65 %์˜ ๊ธ€๋กœ๋ฒŒ ๋ธŒ๋ผ์šฐ์ € ์‚ฌ์šฉ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ CSS Variable Polyfill์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€์ด๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๋Œ€๊ทœ๋ชจ ๋ธŒ๋ผ์šฐ์ € ๊ณต๊ธ‰์ž๊ฐ€์ด๋ฅผ ์ถ”์ง„ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฐ€์ง€๊ณ ์žˆ๋Š” ๊ท€์ค‘ํ•œ ๊ธฐ๋Šฅ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ณต์‹ ์‚ฌ์–‘ : https://drafts.csswg.org/css-variables/

@stramel ๊ทธ๊ฒƒ์€์ด ๋ฌธ์ œ์™€ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. Less์—์„œ๋Š” CSS ๋ณ€์ˆ˜๊ฐ€ ์ด๋ฏธ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์š”์ฒญ์€ ํ•ด๋‹น ์‚ฌ์–‘์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ์•ฝ @apply ์ž…๋‹ˆ๋‹ค.

ํŽธ์ง‘ : ๋ชจ๋“  CSS ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ ๊ฐ’์ด ์ง€์›๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์•„๋ž˜๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

@ matthew-dean ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์˜คํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ด€๊ณ„์—†์ด : +1 : CSS ๋ฏน์Šค ์ธ / ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ ์„ธํŠธ ์šฉ

@ matthew-dean ๋œ ์ง€์›ํ•˜๋Š” ๊ธฐ์ค€์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฉด ๊ดœ์ฐฎ์Šต๋‹ˆ๊นŒ?

@ donny-dont Less๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ํ”„๋กœ์ ํŠธ์ด๋ฏ€๋กœ ํŠน๋ณ„ํ•œ ๋ฐ”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์˜ˆ, ๋‹จ์ผ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ๋„˜์–ด์„œ๋Š” ๊ฒƒ์ด ๋” ์ผ๋ฐ˜์ ์ธ ๊ธฐ๋Šฅ์œผ๋กœ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด๊ฒƒ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒฝ์šฐ (๋‚ด๊ฐ€ ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ) : ๋ชจ๋“  Polymer ๋น„ํ‘œ์ค€ CSS๋ฅผ ๋ณ„๋„์˜ ํŒŒ์ผ์— ๋„ฃ๊ณ  ๋” ์ ์€ ํŒŒ์ผ์— ์ธ๋ผ์ธ ํ‚ค์›Œ๋“œ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์€ ์ˆ˜์˜ ํŒŒ์ผ์ด ๋” ์ ์€ ๋ณ€์ˆ˜์™€ ํด๋ฆฌ๋จธ ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ ์‚ฌ์ด์— ์ธํ„ฐํŽ˜์ด์Šคํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์ด ํด๋ฆฌ๋จธ๊ฐ€ ์›ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ํ‘œ์ค€์—์„œ ๋ชจ๋“  ํŽธ์ฐจ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜๋Š” ์—†๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜์‹ญ์‹œ์˜ค.

์ด๊ฒƒ์„ ๋‹ค์‹œ ์‚ดํŽด๋ณด๊ธฐ ์œ„ํ•ด ๋‚˜๋Š” ๋ถˆํ–‰ํžˆ๋„ ๋ฌธ์ œ์˜ ๋ฒ”์œ„์— ๋Œ€ํ•ด ์ข์€ ์‹œ๊ฐ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, ์˜ˆ, @apply ๋Š” ์ œ์•ˆ ์ผ ๋ฟ์ด์ง€ ๋งŒ _this_๋Š” ์ž˜๋ชป๋œ CSS๊ฐ€ _ ์•„๋‹™๋‹ˆ๋‹ค _. ๋” ์ด์ƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

paper-drawer-panel {
  --paper-drawer-panel-left-drawer: {
    background-color: red;
  };
}

๋‚ด ์‹ค์ˆ˜๋Š” @apply ๊ฐ€ ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ ๊ตฌ๋ฌธ์— ๋Œ€ํ•œ ํ™•์žฅ์„ ์ œ์•ˆํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์œ„์˜ _IS_๋Š” ์œ ํšจํ•œ ์‚ฌ์šฉ์ž ์ง€์ • ์†์„ฑ ๊ฐ’์ด๋ฏ€๋กœ Less ์ง€์›์— ์ถ”๊ฐ€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์–‘์— ๋Œ€ํ•ด ๋” ๊นŠ์ด ํŒŒ๊ณ ๋“ค ์‹œ๊ฐ„์ด ์žˆ์—ˆ์œผ๋ฉด ์ข‹์•˜์„ ํ…๋ฐ์š”. (์—ฌ๊ธฐ : https://www.w3.org/TR/css-variables/#syntax.)

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

์ฆ‰, Polymer์™€ ๊ฐ™์€ JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š”์ด CSS ๊ธฐ๋Šฅ ์ด์ „์—๋Š” ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋˜ ์„ ์–ธ์  ์†์„ฑ / ๊ฐ’์„ JS์—์„œ ์ฝ์„ ์ˆ˜์žˆ๋Š” ๊ณณ์— ๋ฐฐ์น˜ํ•˜๊ธฐ ์œ„ํ•ด CSS๋ฅผ "ํ•ดํ‚น"ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ ์  ๋” ์ปค์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๐Ÿ‘ ASAP ๊ตฌํ˜„.

์ด๊ฒƒ์ด ์œ ํšจํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ ๊ตฌ๋ฌธ์ด๋ผ๊ณ  ์ง€์ ํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ๋ฒ„๊ทธ์™€ ๊ธฐ๋Šฅ ์š”์ฒญ์œผ๋กœ ํ‘œ์‹œํ•˜๊ณ ์žˆ๋‹ค. Less๋Š” ๋งํ•  ๊ฒƒ๋„์—†๊ณ  CSS ์ž์ฒด๋„ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • ์†์„ฑ ๊ตฌ๋ฌธ ๋ถ„์„์„ ์œ„ํ•ด Less ํ…Œ์ŠคํŠธ์— ์ถ”๊ฐ€ ํ•  ์ˆ˜์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์˜ค๋Š˜๋‚  ์™„๋ฒฝํ•˜๊ฒŒ ์œ ํšจํ•œ CSS์ž…๋‹ˆ๋‹ค.

.test {
  --custom-function: () => { let x = 1; window['NAMESPACE'].doSomething(x); };
}

๊ธฐ๋ณธ์ ์œผ๋กœ () [] ๋˜๋Š” {} ์— ์žˆ์œผ๋ฉด ์›ํ•˜๋Š” ๋ฌธ์ž๋ฅผ ๋คํ”„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์„ธ๋ฏธ์ฝœ๋ก ์€ ์œ„์˜ ์˜ˆ์—์„œ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ๋‹ซ๋Š” ์„ธ๋ฏธ์ฝœ๋ก ์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์ „์— ์ค‘๊ด„ํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜๊ณ  ๋‹ซํž ๋•Œ๊นŒ์ง€ (์—ด๋ฆฐ ๊ฒฝ์šฐ) ์žฌ๊ท€ ์  ๊ตฌ๋ฌธ ๋ถ„์„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ๊ธฐ์„œ ๊ทธ ์ผ์„ ์‹œ์ž‘ํ–ˆ์ง€๋งŒ ์ด๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ์•„์ง ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. https://github.com/less/less.js/blob/edge/lib/less/parser/parser.js#L1326

_ ์ฐธ๊ณ  : ์œ„ ์ค„์„๋ณด๊ณ  ํ˜ผ๋ž€์Šค๋Ÿฌ์›Œํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ๋Š”์ง€ ๋ช…ํ™•ํžˆํ•˜๊ธฐ ์œ„ํ•ด์ด JavaScript๋Š” ์•„๋ฌด ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. CSS๋Š” ๊ธธ๊ณ  ์•Œ๋ ค์ง€์ง€ ์•Š์€ ์ต๋ช… ๊ฐ’์œผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค ._

๊ธฐ๋ณธ์ ์œผ๋กœ () [] ๋˜๋Š” {}์— ๋ฌด์–ธ๊ฐ€๊ฐ€ ์žˆ์œผ๋ฉด ์›ํ•˜๋Š” ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ๋คํ”„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Œ? ๋‚˜๋ฅผ ์œ„ํ•ด https://www.w3.org/TR/css-variables/#syntax ๋Š” ๋ชจ๋“  ํ† ํฐ (์—ฌ๊ธฐ์— ๋‚˜์—ด๋œ ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ )์€ ์–ด๋””์—๋‚˜์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (๋‘ ์ข…๋ฅ˜์˜ ๊ด„ํ˜ธ์— ๊ด€๊ณ„์—†์ด). ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ๋‹จ๋ฝ์—์„œ ๊ฐ€์ •ํ•ฉ๋‹ˆ๊นŒ? ์–ด๋–ค ๋ฌธ์ž์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด๋‚˜ ๊ด„ํ˜ธ ์•ˆ์˜ ๊ฐ’์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์„ ์•Œ๋ ค์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (๋ฌผ๋ก  url(...) ์ด ์•„๋‹ˆ๋ผ๋ฉด)?

์ฆ‰, --var: ?; , --var: (?); ๋˜๋Š” --var: [ยพ]; ์‹ค์ œ๋กœ ์œ ํšจํ•ฉ๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ๋‚ด๊ฐ€ ์ž˜๋ชป ํ•ด์„ ํ•  ์ˆ˜์žˆ๋Š” ๊ด€๋ จ ์„น์…˜์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • ์†์„ฑ์— ํ—ˆ์šฉ๋˜๋Š” ๊ตฌ๋ฌธ์€ ๋งค์šฐ ๊ด€๋Œ€ํ•ฉ๋‹ˆ๋‹ค. <declaration-value> ํ”„๋กœ๋•์…˜์€ ์‹œํ€€์Šค์— <bad-string-token> , <bad-url-token> , ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” <)-token> , <]-token> ํฌํ•จ๋˜์ง€ ์•Š๋Š” ํ•œ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ† ํฐ ์‹œํ€€์Šค์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค <bad-url-token> <]-token> , <}-token> , ๋˜๋Š” ๊ฐ’์ด "!"์ธ ์ตœ์ƒ์œ„ <semicolon-token> ํ† ํฐ ๋˜๋Š” <delim-token> ํ† ํฐ.

๋”ฐ๋ผ์„œ ์ค‘์š”ํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์ตœ์ƒ์œ„ ์„ธ๋ฏธ์ฝœ๋ก  ํ† ํฐ ๋งŒ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. "๋‹ค๋ฅธ ์ผ์น˜ ๋œ ์Œ ๋‚ด์— ์žˆ์ง€ ์•Š๋‹ค"๋Š” ์˜๋ฏธ๋กœ ํ•ด์„ํ•ฉ๋‹ˆ๊นŒ? ํ•˜์ง€๋งŒ "์ตœ์ƒ์œ„"๊ฐ€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์ž˜๋ชป ํ•ด์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ํ•ด๋‹น ํŽ˜์ด์ง€์— ์ œ๊ณต๋œ JS ์˜ˆ์ œ๊ฐ€ ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ( -foo: if(x > 5) this.width = 10; ๋Š” ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.) ๊ทธ๋Ÿฌ๋‚˜ ๊ณต๋ฐฑ์ด์—†๋Š” = ํ™•์‹คํžˆ ์ผ๋ฐ˜์ ์ธ CSS ํ† ํฐ์ด ์•„๋‹ˆ๋ฉฐ this.width ๋„ ์•„๋‹™๋‹ˆ๋‹ค. ๋ช…ํ™•ํ•˜์ง€ ์•Š๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ—ˆ์šฉ๋˜๋Š” ์˜ค๋ฅ˜ ๋ณต๊ตฌ๊ฐ€ ์–ผ๋งˆ๋‚˜ ํ—ˆ์šฉ๋˜๋Š”์ง€๋ฅผ ๊ณ ๋ คํ•  ๋•Œ ํŒŒ์‹ฑ ์˜ค๋ฅ˜๋ฅผ ๊ฐ€์ • ํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” @apply ๊ตฌ๋ฌธ์ด ์‚ฌ์šฉ์ž ์ •์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์žˆ๋”๋ผ๋„ ์œ ํšจํ•œ (๊ทœ์น™ ์ง‘ํ•ฉ๊ณผ ํ•จ๊ป˜) ์œ ํšจํ•˜๋‹ค๋Š” ๊ฒƒ์„ _ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค _. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž ์ง€์ • ์†์„ฑ์€ {} ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ์„ธ๋ฏธ์ฝœ๋ก ์„ ํ—ˆ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ์ด ์–ธ์–ด๊ฐ€ ์ผ์น˜ํ•˜๋Š” () , [] , {} ๋‚ด์—์„œ ํ—ˆ์šฉ๋˜๋Š” ํŠน์„ฑ์— ๋Œ€ํ•ด ์•”์‹œํ•˜๋Š” ๊ฒƒ์€ ๋…ผ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ ์•Œ์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์ด ๋งŽ์ด ์žˆ์œผ๋ฉฐ, _what_์ด ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์ง€ ๋ชปํ•œ ์ฑ„ ํŠน์ • ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฅด๋Š” ํ•œ ( "์‹œํ€€์Šค๊ฐ€ <bad-string-token> , <bad-url-token> , ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” <)-token> , <]-token> ๋˜๋Š” <}-token> ")๋ฅผ ํฌํ•จํ•˜๊ณ  ํ•ด๋‹น ์†์„ฑ์„ ๋ธŒ๋ผ์šฐ์ €์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์˜๋„๋Š” ์„ฑ๊ณต์ ์ธ ๊ตฌ๋ฌธ ๋ถ„์„์„์œ„ํ•œ ์ตœ์†Œํ•œ์˜ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋งŒ๋“œ๋Š” ๋™์‹œ์— ๊ฐœ๋ฐœ์ž๋ฅผ์œ„ํ•œ ์ตœ๋Œ€์˜ ์œ ์—ฐ์„ฑ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

.bar {
  --foo: {;
  --baz: ";
}

... ๊ตฌ๋ฌธ์€ ์—ฌ๋Ÿฌ ์„ธ๋ฏธ์ฝœ๋ก ์„ ํฌํ•จํ•˜์—ฌ ๋ฌด์—‡์ด๋“  ๋„ฃ์„ ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉํ•˜๊ธฐ๋ฅผ ์›ํ•˜์ง€๋งŒ ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ์•Œ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ผ์น˜ํ•˜๋Š” ๋”ฐ์˜ดํ‘œ / ์ค‘๊ด„ํ˜ธ / ๊ด„ํ˜ธ / ๊ด„ํ˜ธ๊ฐ€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์‹ ์œผ๋กœ๋“  ๊ตฌ๋ฌธ์„ "์ข…๋ฃŒ"ํ–ˆ๋‹ค๊ณ  ํ‘œ์‹œ ํ•  ์ˆ˜์žˆ๋Š” ํ•œ, ์—ฌ๊ธฐ์„œ ์˜๋„๋Š” ํ•ด๋‹น ๊ตฌ๋ฌธ ๋‚ด์—์„œ ์›ํ•˜๋Š” ๊ฒƒ์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๊ด€ํ•ด์„œ :

--var :?;, --var : (?); ๋˜๋Š” --var : [ยพ]; ์œ ํšจํ•œ?

๋ชจ๋ฅด๊ฒ ์–ด์š”.

์œ ํšจํ•œ ๊ฒƒ์œผ๋กœ ์ทจ๊ธ‰ํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? IMO ์˜ˆ. ์™œ๋ƒํ•˜๋ฉด ์šฐ๋ฆฌ๋Š” ์•Œ์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ํฐ ๋ฌธ์ œ์—†์ด ์„ฑ๊ณต์ ์œผ๋กœ ํŒŒ์‹ฑ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€๋Šฅํ•œ ๊ตฌํ˜„์— ๊ด€ํ•ด์„œ๋Š” ... ; ๊นŒ์ง€ ์•„๋ฌด๊ฒƒ๋„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ํฐ ๋ฌธ์ œ๋Š” ์•„๋‹ˆ์ง€๋งŒ ์ ์–ด๋„ ๋ฌธ์ž์—ด, URL ๋ฐ ์ค‘์ฒฉ ๋œ {} ( ; ํฌํ•จ ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ)์„ ์ฒ˜๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. Less ์ฝ”๋“œ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

ํ•œ ๋‹จ๊ณ„ ๋” ๋‚˜์•„๊ฐ€์„œ (ํŒŒ์‹ฑ ๋‹จ๊ณ„์—์„œ) ์ผ์ข…์˜ DR (์™ธ๋ถ€ {} ์ œ์™ธ)์„ ํ—ˆ์šฉํ•˜๊ณ  ๋” ๋งŽ์€ ํ† ํฐ์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. t --var: (1 > 2) / {whatever} foo; ์™€ ๊ฐ™์€ ์šฉ๋„๋กœ DR ํŒŒ์„œ๋ฅผ ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.)

๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ๋” ํŽธ๋ฆฌํ•œ ๊ฒƒ์„ ์œ„ํ•ด ์†”์งํžˆ ์•„๋ฌด๊ฒƒ๋„ ๋ณผ ์ˆ˜ ์—†์ง€๋งŒ Less ๊ธฐ๋Šฅ (ํ† ํฐ๊ณผ ๊ทธ ํ‰๊ฐ€)์ด ํ—ˆ์šฉ๋˜๋Š” ์™„์ „ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ CSS ํ† ํฐ์„ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ง๋กœํ•˜๋ฉด biiiiiiiig ๋ฌธ์ œ :(

์ตœ์ƒ์œ„ ์„ธ๋ฏธ์ฝœ๋ก  ํ† ํฐ ๋งŒ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. "๋‹ค๋ฅธ ์ผ์น˜ ๋œ ์Œ ๋‚ด์— ์žˆ์ง€ ์•Š๋‹ค"๋Š” ์˜๋ฏธ๋กœ ํ•ด์„ํ•ฉ๋‹ˆ๊นŒ? ํ•˜์ง€๋งŒ "์ตœ์ƒ์œ„"๊ฐ€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์ž˜๋ชป ํ•ด์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, ; ์ข…๋ฃŒ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, --var: ";" url(;) {;}; ๋Š” ์œ ํšจํ•˜๊ณ  --var: ; {} foo; --var: ";" url(;) {;}; ๋Š” ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ( "์ตœ์ƒ์œ„ ์ˆ˜์ค€"์ด๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ; ๋Š” ๋ฌธ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค).
ํ•˜์ง€๋งŒ (;) ์— ๋Œ€ํ•ด์„œ๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ถ„๋ช…ํžˆ ์ด๊ฒƒ์€ Less ์ฝ”๋“œ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ์œ ์ผํ•œ ์ƒ๊ฐ์€ ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ์„ ์ƒ์„ฑํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋ณด๊ฐ„ ๊ตฌ๋ฌธ์„ ํ—ˆ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„๋งˆ๋„ ๊ทธ๊ฒƒ์€ ์ผ์ข…์˜ "๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด 2 ๋ผ์šด๋“œ"์™€ ๊ฐ™์€ ์•„์ด๋””์–ด ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜๋„ (;)์— ๋Œ€ํ•ด์„œ๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋„ ์•„๋‹ˆ์•ผ? ์‚ฌ์–‘์—๋Š” ์ข…์ข… ํ† ํฐ ๊ฒฝ๋กœ ๋‹ค์ด์–ด๊ทธ๋žจ๊ณผ ๊ฐ™์€ ๊ตฌ๋ฌธ ๋ถ„์„ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ์–ด๋”˜๊ฐ€์— ๊ฒŒ์‹œ๋˜์–ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ์ด ๊ฒฝ์šฐ์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 1 ๋‹จ๊ณ„๋กœ- {} , () , ๋”ฐ์˜ดํ‘œ ๋ฐ ๋”ฐ์˜ดํ‘œ ๋งŒ ์ผ์น˜์‹œํ‚ค๊ณ  ์ตœ์ƒ์œ„ ; ๊ดœ์ฐฎ์•„ ๋ณด์ผ ๋•Œ๊นŒ์ง€ ์ต๋ช… ๋…ธ๋“œ์— ์•„๋ฌด๊ฒƒ๋„ ๋คํ•‘ํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. ์ผ์น˜ํ•˜๋Š” ๋Œ€๊ด„ํ˜ธ [] ๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์–ธ๊ธ‰๋˜์–ด ์žˆ์œผ๋ฉฐ ๋‹ค๋ฅธ ๋ชจ๋“  ๋ถ€๋ถ„์ด ์žˆ์œผ๋ฉด ์ƒ๋‹นํžˆ ์‚ฌ์†Œํ•ฉ๋‹ˆ๋‹ค.

ํŠน๋ณ„ํžˆ ํ† ํฐํ™”ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” DR๊ณผ ํ˜ผํ•ฉ ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ๋ˆ„๊ตฐ๊ฐ€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.weird {
  --php: ($x = 5 /* + 15 */ + 5; echo $x;);
  --example: [My DR will be --this: { 
    blah: nope;
    --never mind i gave up;
    no wait here it --is: {
      lol: cats;
    }
  }];
}

์ฆ‰, Less๊ฐ€ ์‚ฌ์šฉ์ž ์ง€์ • ์†์„ฑ์˜ ๋‚ด์šฉ์„ ๋‹ค๋ฃฐ ๋•Œ ์†์„ ๊นจ๋—์ด ๋‹ฆ๋Š” ๊ฒƒ์ด ๋” ๋‚ซ์Šต๋‹ˆ๋‹ค.

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

์œ„์˜ ์˜ˆ๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

.weird {
  --example: [My DR will be --this: { 
    blah: nope;
    --never mind i gave up;
    no wait here it --is: {
      lol: cats;
   // missing matching }
  }];
}

"No Less ์ฝ”๋“œ"

์•„๋งˆ๋„ ์ด๊ฒƒ์€ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์ฒ˜๋Ÿผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
--var: darken(red, 5%) + 1;
๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ž‘๋™ํ•˜์ง€๋งŒ ( --fortran: read (*, *, iostat=ierr) radius, height; ) ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค :(

์•„๋งˆ๋„ ์ด๊ฒƒ์— ๋Œ€ํ•œ ์˜ต์…˜์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ( --oh-no-yet-another-option-for-custom-properties-to-be-parsed-one-way-or-another: on :)

์•„๋งˆ๋„ ์ด๊ฒƒ์€ ๋‹ค์šด ๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค-์ง€๊ธˆ์ฒ˜๋Ÿผ --var : darken (red, 5 %); ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ž‘๋™ํ•˜์ง€๋งŒ (--fortran์„ ์œ„ํ•ด : read (*, *, iostat = ierr) radius, height;)ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค :(

๐Ÿค” ๊ธ€์Ž„ ..... ๋„ค, ๋ฌด์Šจ ๋ง์ธ์ง€ ์•Œ ๊ฒ ์–ด์š”. ๊ทธ๋ž˜์„œ ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ณด๊ฐ„์ด ํ•„์š”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํŒŒ์„œ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ์Šต๋‹ˆ๋‹ค.

<strong i="8">@iostat</strong>: ierr;
--fortran: read (*, *, iostat=@{iostat}) radius, height;

// treat similar to:
--fortran: ~"read (*, *, iostat=@{iostat}) radius, height";

(์ ์ ˆํ•œ ๋งค์นญ ํ† ํฐ์— ๋Œ€ํ•œ ์•ž์„œ ์–ธ๊ธ‰ ํ•œ์ฃผ์˜ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ?)

๋‚ด ๋ง์€ .... ๋Œ€์•ˆ์€ ๋ณธ์งˆ์ ์œผ๋กœ ์ด์Šค์ผ€์ดํ”„ ๊ตฌ๋ฌธ์„ ๊ถŒ์žฅํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚ด๋ถ€ CSS ์ฝ”๋“œ๋ฅผ ์ ๊ฒŒ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์˜ˆ, ๋ณด๊ฐ„์ด ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์‹คํ—˜์  ์˜ต์…˜์œผ๋กœ DR-ike ๊ตฌ๋ฌธ ๋ถ„์„์— ์—ฌ์ „ํžˆ ์ข‹์„ ๊ฒƒ ๊ฐ™์ง€๋งŒ (์ ์–ด๋„ ์‚ฌ์šฉ์ž ์ •์˜ ์†์„ฑ ํ•ดํ‚น์ด ๋„๋ฆฌ ํผ์งˆ ๋•Œ๊นŒ์ง€ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ฐ€์ƒ --javascript: 1 = 2; ๋ณด๋‹ค ์‹ค์ œ --var: darken(red, 5%); ๋ฅผ ์„ ํ˜ธ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. )

์ฆ‰, ๋‚˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• (๋ณ„๋„ ๋˜๋Š” ๋™์‹œ์—)์œผ๋กœ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์— ๋Œ€ํ•œ ์ƒ๋‹นํžˆ ๊ฐ•๋ ฅํ•œ ๊ตฌํ˜„ / ์†”๋ฃจ์…˜์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์˜ ์—ฌ๋Ÿฌ ์ฝ”๋“œ ์˜ˆ์ œ๋ฅผ ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉ์ž ์ง€์ • ์†์„ฑ ๊ฐ’๊ณผ ์•Œ ์ˆ˜์—†๋Š” at- ๊ทœ์น™์€ ๋ณด๊ฐ„์„ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ณธ์งˆ์ ์œผ๋กœ ์ด์Šค์ผ€์ดํ”„ ๋œ ๋”ฐ์˜ดํ‘œ ๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. # 3213์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

๊ฒฐ์ •๋œ.

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