Less.js: ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜ ์ƒ์„ฑ

์— ๋งŒ๋“  2012๋…„ 02์›” 16์ผ  ยท  28์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: less/less.js

์•ˆ๋…•ํ•˜์„ธ์š”,

๋‹ค์Œ๊ณผ ๊ฐ™์ด Custom Functions๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  darkfadein(<strong i="7">@color</strong>, @value) {
    return fadein(darken(<strong i="8">@color</strong>, @value));
  }

  .foo {
    color: darkfadein(#333, 10%);
  }

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ปดํŒŒ์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  .foo {
    color: #1a1a1a;
  }
consider closing feature request low priority

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

ํ•ดํ‚น์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ „์—ญ js ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ๋‚˜์ค‘์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

<strong i="6">@fn</strong>: ~`fn = function(a)ย { return a; }`;

<strong i="7">@arg</strong>: 8px;

p {
    font-size: ~`fn("@{arg}")`;
}

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

ํ˜ผํ•ฉ๊ณผ ๊ตฌ๋ณ„ํ•˜๊ณ  CSS ๊ตฌ๋ฌธ์— ๋” ๊ฐ€๊น๊ฒŒ ์œ ์ง€ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@darkfadein(<strong i="6">@color</strong>, @value): fadein(darken(<strong i="7">@color</strong>, @value));

๋งค๊ฐœ๋ณ€์ˆ˜์— ์˜์กดํ•˜๋Š” ๋ณ€์ˆ˜์™€ ๊ฐ™์€ ์ข…๋ฅ˜(์ƒ๊ฐํ•ด๋ณด๋ฉด ์ผ์ข…์˜ ํ•จ์ˆ˜ =)

@souldreamer ์˜ ๊ตฌ๋ฌธ์— +1 .

๊ทธ๋Ÿฌ๋‚˜ @souldreamer ์˜ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ถ€๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๊ฐ’์„ ๋ณ€์ˆ˜์— ๋„ฃ๊ณ  ๋‹ค์‹œ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

๋‹ค์Œ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  @darkfadein(<strong i="9">@color</strong>, @value) {
     <strong i="10">@foo</strong>: darken(<strong i="11">@color</strong>, @value);
     return: fadein(@foo);
  }

์ดํ›„ ๋ฒ„์ „์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  @darkfadein(<strong i="15">@color</strong>, @value) {
     <strong i="16">@foo</strong>: darken(<strong i="17">@color</strong>, @value);
     for(<strong i="18">@i</strong> = 0; <strong i="19">@i</strong> < 5; @i++): {
       <strong i="20">@foo</strong>: darken(<strong i="21">@foo</strong>, @i);
     };
     return: fadein(@foo);
  }

๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์ผ์ข…์˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋น„์Šทํ•œ ํ•„์š”์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‘ ๊ฐ€์ง€ ๊ฐ€๋Šฅํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๊ฐ€์ง€ ํ•ด๊ฒฐ์ฑ…์€ ๋ณ€์ˆ˜ ๊ตฌ๋ฌธ์„ ์œ„์—์„œ ์„ค๋ช…ํ•œ

@grid-width(<strong i="7">@columns</strong>, @column-width) {
    <strong i="8">@computedWidth</strong> = @columns*@column-width;
    return @computedWidth;
}
div {
    width: @grid-width(6,60);
}

๋‘ ๋ฒˆ์งธ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋ฏน์Šค์ธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์–ด์จŒ๋“  ๋ฏน์Šค์ธ์„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜๋กœ ์ทจ๊ธ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— _๋ฏน์Šค์ธ์— return ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ์ฑ…์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

.grid-width(<strong i="13">@columns</strong>, @column-width) {
    <strong i="14">@computedWidth</strong> = @columns*@column-width;
    return @computedWidth;
}
div {
    width: .grid-width(6,60);
}

SASS์˜ "๊ธฐ๋Šฅ์  ์ง€์‹œ๋ฌธ"์€ ์œ ์‚ฌํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ ์ด ๋ฏน์Šค์ธ ์†”๋ฃจ์…˜์ด ํ›จ์”ฌ ๋” ์šฐ์•„ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

508ํ˜ธ ์™€ 609ํ˜ธ๋„ ์ด์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

@tylertate ์˜ ๋‘ ๋ฒˆ์งธ ๊ตฌ๋ฌธ์ด ๊ฐ€์žฅ ๊ฐ™์Šต๋‹ˆ๋‹ค . ๋‹น์‹ ์ด ๋งํ–ˆ๋“ฏ์ด ์ด๋ฏธ ๋ฏน์Šค์ธ์„ JavaScript๋กœ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€์žฅ ์‰ฌ์šด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฏน์Šค์ธ์œผ๋กœ ์ด๋Ÿฐ ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

.grid-width(<strong i="8">@columns</strong>, @column-width) {
    <strong i="9">@computedWidth</strong> = @columns*@column-width;
    for (var i = 0; i <= 36; i++) {
      <strong i="10">@computedWidth</strong> = darken(<strong i="11">@computedWidth</strong>, i);
    }
    return @computedWidth;
}
div {
    width: .grid-width(6,60);
}

์ •์˜๋œ LESS ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌ๋ฌธ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ๋ณด๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๊ฐ™์€ ๋กœ์ง์„ JavaScript LESS ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ์˜ฎ๊ธฐ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ œ์•ˆ์€ ํ˜„์žฌ LESS ๊ตฌ๋ฌธ ๋ฐ ๋””์ž์ธ๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ•์„ ์•Œ๋ฉด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๋น„๊ต์  ๊ฐ„๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ‘œ์‹œ๋œ ๋ฌธ์„œ์— ๋Œ€ํ•œ ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๊ฒฐ์˜์•ˆ์€ ๋ฌด์—‡์ด์—ˆ์Šต๋‹ˆ๊นŒ?

๋ฌธ์„œํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. https://github.com/cloudhead/lesscss.org/issues/54 ์ฐธ์กฐ

less.js์˜ ์—ฐ๊ฒฐ๋œ ๋ฌธ์ œ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ less์— ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

less = { functions: { rgbstr: function (color) {var str = color; return new(less.tree.Quoted)('"' + str + '"', str,true,1);}}};

ํ˜„์žฌ๋กœ์„œ๋Š” ๊ธฐ๋Šฅ์„ ๋…ธ๋“œ ๋ฒ„์ „์— ํ”Œ๋Ÿฌ๊ทธ์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์ง€๋งŒ,

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. LESS์˜ ๊ตฌ๋ฌธ์—์„œ JavaScript๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์œ„์น˜์™€ ์‘๋‹ต์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ mixin์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ํŠน์ • ์†์„ฑ๊ณผ ์—ฐ๊ด€์‹œํ‚ค์ง€ ์•Š๋Š” ๊ฒƒ์€ ๋ถ„๋ช…ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์€ ๋ˆ„๊ตฌ๋‚˜ @Deltachaos ๊ฐ€ ํ•˜๋ ค๊ณ  ํ–ˆ๋˜ ๊ฒƒ์„ ํ•˜๊ณ  ์‹ถ์–ดํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งŒ๋“œ๋Š” ์ˆ˜์ค€์œผ๋กœ ๋–จ์–ด์ง€์ง€ ์•Š๊ณ  ์ด๊ฒƒ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ๊นŒ๋‹ค๋กœ์šด ์ผ์ž…๋‹ˆ๋‹ค. ๋ฃจํ”„๊ฐ€ ํ•„์š”ํ•˜๊ฑฐ๋‚˜ if๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ํŠน์ • ๊ฐ’์œผ๋กœ 3๊ฐœ์˜ ์ ์€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒฝ์šฐ ๊ตฌ๋ฌธ์„ DRY๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋‚ด๋ถ€๋ฅผ ๋œ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๊ณณ์—์„œ 5% ์–ด๋‘ก๊ฒŒ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹ค์‹œ ์—ด์—ˆ์ง€๋งŒ ์ด๊ฒƒ์€ ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ณต์ œ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ณด๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ˜„์žฌ mixins ๋ฒ”์œ„์˜ ๋ณ€์ˆ˜๋Š” ๋ชจ๋‘ ์™ธ๋ถ€ ๋ฒ”์œ„์— ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ผ์ข…์˜ ๋ณ€์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋”์ฐํ•œ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๊ณ  ์ œ๊ฑฐํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

#538์˜ ์ค‘๋ณต

"mixins ๋ฒ”์œ„์˜ ๋ณ€์ˆ˜๋Š” ๋ชจ๋‘ ์™ธ๋ถ€ ๋ฒ”์œ„์— ๋ณต์‚ฌ๋ฉ๋‹ˆ๋‹ค."

์–ด, ์ •๋ง? ์˜ˆ, ๊ทธ ํ–‰๋™์„ ์ œ๊ฑฐํ•ฉ์‹œ๋‹ค. ๋ณ€์ˆ˜๊ฐ€ ๋‚ด๋ณด๋‚ด๊ธฐ๋กœ ํ‘œ์‹œ๋˜๊ฑฐ๋‚˜ ์ž๋™ ๋ˆ„์ถœ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋Š” ๋ธ”๋ก ๋ฒ”์œ„์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ๋ฐฑ๋„์–ด ๋ฒ„๊ทธ๋ฅผ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ•ดํ‚น์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ „์—ญ js ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ๋‚˜์ค‘์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

<strong i="6">@fn</strong>: ~`fn = function(a)ย { return a; }`;

<strong i="7">@arg</strong>: 8px;

p {
    font-size: ~`fn("@{arg}")`;
}

@fabienevain ์€ ์ง€๊ธˆ ๊ฐ™์€ ํ•ดํ‚น์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค :)

@fabienevain ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค, ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค~ :+1:

process.mainModule์— ์•ก์„ธ์Šคํ•˜์—ฌ ๋™์ผํ•œ eval ๊ฐ์˜ฅ์—์„œ ์‹ค์ œ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค... ๋‹จ, process.mainModule.children ๋ฅผ ๋ฐ˜๋ณตํ•ด์•ผ ํ•˜๊ณ  ์–ด๋–ค ์ด์œ ๋กœ ์ˆœ์„œ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด less.js์™€ ์ผ์น˜ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฏธ๋ž˜. ์ €๋Š” ๋งน๋ชฉ์ ์œผ๋กœ ๋œ ์‹ ๋ขฐํ•˜๋Š” ๊ฒƒ์ด ์„ธ ๋ฒˆ์งธ ๋ชจ๋“ˆ์ด๋ผ๊ณ  ๋ฐ˜๋ณตํ•˜์ง€ ์•Š์„ ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ require ์— ์•ก์„ธ์Šคํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ fs ๋ฐ less์—์„œ ์ด๋ฏธ ํ•„์š”ํ•œ ๊ธฐํƒ€ ํ•ญ๋ชฉ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<strong i="10">@anything</strong>: `(function() {
    // console.log(process.mainModule.children[0].exports); // node fs is here
    // console.log(process.mainModule.children[2].children) // children of less, more node modules!
    var less = process.mainModule.children[2].exports;

    less.functions.functionRegistry.add("firstfunc", function(a, context) {
        // console.log(a, context);
        return new less.tree.Color("00ff00");
    });

    less.functions.functionRegistry.add("secondfunc", function(a, context) {
        // console.log(a, context);
        return new less.tree.Color("ff0000");
    });
})()`;


test {
    background: firstfunc(white);
    color: secondfunc(black);
}

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

ํŽธ์ง‘ JS๋ฅผ ๋ฐฐ์ œํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์™œ ๋ฐฑํ‹ฑ์ด ๋„์ž…๋˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ๋ณต์‚ฌ ๋ฐ ๋ถ™์—ฌ ๋„ฃ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•œ LESS๋ฅผ ์ข‹์•„ํ•˜๋ฏ€๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ€๋Šฅํ•œ ํ•œ ๋ณต์‚ฌ ๋ฐ ๋ถ™์—ฌ ๋„ฃ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•œ LESS๋ฅผ ์ข‹์•„ํ•˜๋ฏ€๋กœ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ธ๋ผ์ธ ๋ฐฑํ‹ฑ ํ•ต์—์„œ node.js ๊ธฐ๋ฐ˜ less.js ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•„์š”ํ•˜๋”๋ผ๋„ ์ฝ”๋“œ๊ฐ€ "๋ณต์‚ฌ ๋ฐ ๋ถ™์—ฌ๋„ฃ๊ธฐ ๊ฐ€๋Šฅ"ํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ง€๋งŒ ๋™์‹œ์— ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž˜๋ชป๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ๋‹ˆ๊นŒ? ๋„!

@seven-phase-max ๋‚ด ๋„๊ตฌ๋Š” ๊ฝค ์—‰๋ง์ž…๋‹ˆ๋‹ค. lessc ๋ช…๋ น์ค„ ์ธ์ˆ˜๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์•„๋งˆ๋„ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. (๋˜๋Š” ๋‚ด๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ์ฑ„์šฐ๋Š” ํ•˜๋‚˜์˜ ๋งˆ์Šคํ„ฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค) ํ•˜์ง€๋งŒ ์•„๋‹ˆ์š”, ์ œ ํ™˜๊ฒฝ์„ ๋ง์ณค๊ณ  Eclipse ์ž‘์—… ๊ณต๊ฐ„์— ~100๊ฐœ์˜ WP ํ…Œ๋งˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ…Œ๋งˆ๋Š” ๋ชจ๋“  ๋นŒ๋“œ ๋ช…๋ น ๋“ฑ์ด ๊ฑฐ๊ธฐ์— ๋ถ™์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ฑฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. .

@Ciantic ์šฐ์„  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ •์˜ ๊ธฐ๋Šฅ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ๋ช…๋ น์ค„ ์˜ต์…˜์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(#2479). ๋‘ ๋ฒˆ์งธ๋กœ, ์ปดํŒŒ์ผ๋Ÿฌ ์˜ต์…˜์„ ์ œ์–ดํ•  ์ˆ˜ ์—†๋„๋ก ํ•˜๋Š” ์‹ฌํ•˜๊ฒŒ ๊ผฌ์ธ ํ™˜๊ฒฝ์ด ๋ฌด์—‡์ด๋“  ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค(๊ฒฐ๊ตญ lessc "executable"์€ ์‹ค์ œ ๋…ธ๋“œ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ฆฌ๋””๋ ‰์…˜๋˜๋Š” OS ์ฝ˜์†” ์Šคํฌ๋ฆฝํŠธ์ด๋ฏ€๋กœ ์–ด๋–ค ์‹์œผ๋กœ๋“  _์–ด๋–ค ๊ฒƒ_์ด๋“ ).

์–ด๋Š ์ชฝ์ด๋“  ๋‚ด ์˜๊ฒฌ์€ "๋ณต์‚ฌ ๋ฐ ๋ถ™์—ฌ ๋„ฃ๊ธฐ ๋Œ€ ํ”Œ๋Ÿฌ๊ทธ์ธ"adv์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊นจ์ง„ ๋นŒ๋“œ ๋„๊ตฌ/์ฒด์ธ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

@seven-phases-max ๊ฐ€์ ธ์˜ค๊ธฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ๋‚ด๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” ๋„๊ตฌ์™€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค! ์ „์—ญ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๊ฐ€ ์•„๋‹Œ ๋‚ด ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€์— ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ํ•จ์ˆ˜๋ฅผ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๊ณ  ์ „์—ญ ํ•จ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋”๋ผ๋„ ์ˆ˜์‹ญ์–ต ๊ฐœ์˜ ํŒŒ์ผ์ด ์†์ƒ๋˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@Ciantic

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

๋” ์ฝ์–ด๋ณด์„ธ์š”. ํ’€ ๋ฆฌํ€˜์ŠคํŠธ์˜ ์ดˆ๊ธฐ ์ดˆ์•ˆ์€ ๊ธ€๋กœ๋ฒŒ ๋“ฑ๋ก์˜ ์‰ฌ์šด ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ž์ง€๋งŒ ์ผ๋ถ€ ํ†ต์ฐฐ๋ ฅ์œผ๋กœ ๋‚˜์ค‘์— ๋ฒ”์œ„-๋กœ์ปฌ ๋“ฑ๋ก์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ

.my-mixin() {
  <strong i="10">@plugin</strong> "my-func.js";
  <strong i="11">@value</strong> : my-func();
}

๋ฏน์Šค์ธ ๋ฒ”์œ„ ์™ธ๋ถ€๋กœ my-func ๋ˆ„์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฒฝ๋กœ๋Š” ๋ฌผ๋ก  @plugin ์„ ์–ธ์ด ํฌํ•จ๋œ ํŒŒ์ผ๊ณผ๋„ ๊ด€๋ จ์ด ์žˆ์œผ๋ฏ€๋กœ ๋ชจ๋“  ๊ฒƒ์ด ๊น”๋”ํ•˜๊ฒŒ ๋ฒˆ๋“ค๋กœ ์ œ๊ณต๋˜์–ด ํƒ€์‚ฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 100% _ํˆฌ๋ช…ํ•˜๊ฒŒ_.

๊ทธ๊ฒƒ์ด ์ด ๊ธฐ๋Šฅ์˜ ๋””์ž์ธ ๋ชฉํ‘œ์˜€์Šต๋‹ˆ๋‹ค. ^_^

less.js๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ์ƒ‰์ƒ ์กฐํ•ฉ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
์ฝ”๋“œ๋ฅผ ์ปค๋ฐ‹ํ•˜๋Š” ๋™์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
์ง€์›ํ•˜์ง€๋งŒ less.js๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ•ดํ‚น์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ „์—ญ js ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ๋‚˜์ค‘์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

<strong i="7">@fn</strong>: ~`fn = function(a)ย { return a; }`;

<strong i="8">@arg</strong>: 8px;

p {
    font-size: ~`fn("@{arg}")`;
}

@fabienevain @fn ์—์„œ ๋” ์ ์€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? hsvsaturation ใ€ unit ๋“ฑ๊ณผ ๊ฐ™์€ .Thx.

@hiyangguo

์ธ๋ผ์ธ JS ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜๋ฅผ ์ ์ ˆํ•œ ๋ฐฉ์‹์œผ๋กœ ๋นŒ๋“œํ•˜๊ณ  ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
๋ฌธ์„œ๋ฅผ ์ฝ์œผ์‹ญ์‹œ์˜ค. ๋ชจ๋“  ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค: http://lesscss.org/features/#plugin -atrules-feature

@rjgotten ๋„ค , ์ •๋ง ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

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