Less.js: ์กฐ๊ฑด๋ถ€ CSS ์ฝ”๋“œ

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

๋ณ€์ˆ˜์— ๋”ฐ๋ผ ์กฐ๊ฑด๋ถ€ CSS ์ฝ”๋“œ์™€ ๊ฐ™์€ ๊ฒƒ์„ ๊ฐ–๋Š” ๊ฒƒ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

<strong i="6">@has_theme_support</strong>: true;

.awesome-class {
    width: 100px;
    height: 200px;
    margin: 0 auto;

    /* Adds theme support if <strong i="7">@has_theme_support</strong> is 'true'; */
    if( <strong i="8">@has_theme_support</strong> ){
        background: green;
        color: yellow;
    }
}

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

์˜ˆ, ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ›จ์”ฌ ์ ๊ฒŒ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ์ˆ˜๋ฐฑ ๊ฐœ์˜ .mixin์„ ์ž‘์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋Š” mixin์ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฏน์Šค์ธ๋„ ์ด ๊ธฐ๋Šฅ์œผ๋กœ ๋งŽ์€ ํž˜์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ ์€ CSS๋Š” ์ผ๋ถ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ ์™œ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

.button-maker (<strong i="8">@style</strong>: 'light') {
    cursor: pointer;
    display: inline-block;
    padding: 5px 10px;

    if(<strong i="9">@style</strong> == 'light'){
        /* adds light styling */
    }

    if(<strong i="10">@style</strong> == 'dark'){
        /* adds dark styling */
    }
}

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

http://www.lesscss.org/ ๋กœ ์ด๋™ํ•˜์—ฌ ๊ฒฝ๋น„์›์„ ๊ฒ€์ƒ‰ํ•˜์‹ญ์‹œ์˜ค.

๋ฏน์Šค์ธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ๋ชจ๋“  CSS์—์„œ ๊ฐ€๋“œ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๊ธฐ๋Šฅ ์š”์ฒญ์„ ์‚ดํŽด๋ณด์„ธ์š”.

์˜ˆ, ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ›จ์”ฌ ์ ๊ฒŒ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ์ˆ˜๋ฐฑ ๊ฐœ์˜ .mixin์„ ์ž‘์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋Š” mixin์ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฏน์Šค์ธ๋„ ์ด ๊ธฐ๋Šฅ์œผ๋กœ ๋งŽ์€ ํž˜์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ ์€ CSS๋Š” ์ผ๋ถ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ ์™œ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

.button-maker (<strong i="8">@style</strong>: 'light') {
    cursor: pointer;
    display: inline-block;
    padding: 5px 10px;

    if(<strong i="9">@style</strong> == 'light'){
        /* adds light styling */
    }

    if(<strong i="10">@style</strong> == 'dark'){
        /* adds dark styling */
    }
}

๋‚˜๋Š” ๋‚ด๊ฐ€ ์ •๋ง๋กœ ๋†“์น˜๊ณ  ์žˆ๋Š” ์ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ํฐ +1์„ ์ถ”๊ฐ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํฐ ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ ๊ฒฝ๋น„์›์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ์•…๋ชฝ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ •๋ง ์ผ์ด ํ›จ์”ฌ ์‰ฌ์›Œ์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค...

switch ๋ฌธ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

@lukeapage ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ๋ฌธ์ œ/๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

LESS๋Š” ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ/์Šคํƒ€์ผ์€ CSS์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

LESS๋Š” ์„ ์–ธ์ ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ถ„๊ธฐ ๋…ผ๋ฆฌ, ๋ฃจํ”„ ๋“ฑ์„ ํฌํ•จํ•˜๋Š” ๋ณต์žกํ•œ ์ƒํ™ฉ์ด ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

@pierresforge ๊ฐ€๋“œ๊ฐ€ ๋ถ€์กฑํ•œ ์˜ˆ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์„ ํƒ๊ธฐ์— ๊ฐ€๋“œ๋ฅผ ๋‘˜ ์ˆ˜ ์žˆ์œผ๋ฉด ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š” ๊ณณ์€ ์–ด๋””์ž…๋‹ˆ๊นŒ?

ํ† ๋ก ์ด ์—ด๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์ €(๋˜๋Š” ํ•ต์‹ฌ ํŒ€์˜ ๋‹ค๋ฅธ ๊ตฌ์„ฑ์›)๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์„ค๋“ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด๊ฒ ์Šต๋‹ˆ๋‹ค. .

http://lesscss.org/ ์˜ ๋ฌธ์žฅ
"LESS๋Š” ๋ณ€์ˆ˜, ๋ฏน์Šค์ธ, ์—ฐ์‚ฐ ๋ฐ ํ•จ์ˆ˜์™€ ๊ฐ™์€ ๋™์  ๋™์ž‘์œผ๋กœ CSS๋ฅผ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค."

์˜ˆ LESS๋Š” ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด๊ฐ€ ์•„๋‹ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ๋ฐ ์ž‘์—…๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋น ์ง„ ๊ฒƒ์€ ์กฐ๊ฑด๋ถ€ ๋…ผ๋ฆฌ์ž…๋‹ˆ๋‹ค.

CSS ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋Š” ์กฐ๊ฑด๋ถ€ ๋…ผ๋ฆฌ์— ๋ถˆ๊ณผํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

<strong i="11">@media</strong> all and (max-width: 699px) and (min-width: 520px), (min-width: 1151px) {
  body {
    background: #ccc;
  }
}

CSS๊ฐ€ ๊ฐ€๋“œ์™€ ๊ฐ™์€ ์กฐ๊ฑด๋ถ€ ๋…ผ๋ฆฌ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค๋ฉด. ๊ทธ๋ž˜์„œ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ. ๋ฏน์Šค์ธ์œผ๋กœ ํ™•์žฅํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
Guards๋Š” CSS ์ฝ”๋“œ ๋ธ”๋ก ์™ธ๋ถ€์˜ ์กฐ๊ฑด๋งŒ ํ—ˆ์šฉํ•˜๊ณ  ์ฝ”๋“œ ๋ธ”๋ก ๋‚ด๋ถ€๋Š” ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด https://github.com/cloudhead/less.js/issues/1293#issuecomment -16929701์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๊ฒฝ๋น„์›์€ ์ด๋Ÿฌํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๋„์šธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค..

HTML์—๋„ ์กฐ๊ฑด๋ถ€ ๋…ผ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ, ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด๊ฐ€ ์•„๋‹Œ ๋งˆํฌ์—… ์–ธ์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

<!--[if gte IE 9]><!-->        
    <script src="" />
<!--<![endif]-->

@lukeapage ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค..

๊ฒฝ๋น„์›์€ ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๊ฐ€ ํ•˜๋Š” ์ผ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜ CSS์—์„œ๋Š” ์„ ํƒ๊ธฐ ๋‚ด๋ถ€์— ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋ฅผ ์ค‘์ฒฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œ์˜ ๋ฃจํŠธ์—๋งŒ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ, ๊ฒฝ๋น„์›์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์€ ์˜ˆ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€๋“œ๊ฐ€ ์œ ์ง€ ๊ด€๋ฆฌ์— ๊ฐ€์žฅ ์ ํ•ฉํ•˜์ง€ ์•Š์€ ๊ณณ์ด ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ:

.button {
  .inline-block();
  .fix-ie-left-padding();
  .shadow(0, 2px, rgba(0, 0, 0, @buttonShadowOpacity));
  .border: 1px solid @buttonBorderColor;

  if (green(@coreBackgroundColor) > 50%) {
    background-color: darken(<strong i="7">@coreBackgroundColor</strong>, 20%);
  }
  else if (red(@coreBackgroundColor) > 30%) {
    background-color: darken(<strong i="8">@coreBackgroundColor</strong>, 15%);
  }
  else if (blue(@coreBackgroundColor) > 25%) {
    background-color: darken(<strong i="9">@coreBackgroundColor</strong>, 8% );
  }
  else {
    background-color: @coreBackgroundColor;
  }
}

๋‚ด ์˜๋ฏธ์—์„œ ๋‹ค์Œ๋ณด๋‹ค ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ์ž๋ช…ํ•ฉ๋‹ˆ๋‹ค(์ฃผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋งŽ์€ ์š”์ธ์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์˜๋ฏธ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ).

.buttonBackground(@color) when (green(@color) > 50%) {
  background-color: darken(<strong i="13">@coreBackgroundColor</strong>, 20%);
}

.buttonBackground(@color) when (red(@color) > 30%) {
  background-color: darken(<strong i="14">@coreBackgroundColor</strong>, 15%);
}

.buttonBackground(@color) when (red(@color) > 25%) {
  background-color: darken(<strong i="15">@coreBackgroundColor</strong>, 8%);
}

.buttonBackground(@color) {
  background-color: @color;
}

.button {
  .inline-block();
  .fix-ie-left-padding();
  .shadow(0, 2px, rgba(0, 0, 0, @buttonShadowOpacity));
  .border: 1px solid @buttonBorderColor;
  .buttonBackground(@coreBackgroundColor);
}

๋‚˜๋Š” ์ด๊ฒƒ์ด ํ† ๋ก ์˜ ๋Œ€์ƒ์ด๋ผ๋Š” ๋ฐ ๋™์˜ํ•˜์ง€๋งŒ ๋งŽ์€ ํ•ต์‹ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ด๊ฒƒ์€ ๊ฝค ์ข‹์€ ์ถ”๊ฐ€ ์‚ฌํ•ญ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฏน์Šค์ธ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ ๋„ ๋‹จ์ผ ์š”์†Œ์— ์ ์šฉํ•  ๋Œ€๋ถ€๋ถ„์˜ ๊ทœ์น™์„ ํ•จ๊ป˜ ๋ฌถ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

@Soviut Devil์˜ ์˜นํ˜ธ์ž - LESS์—์„œ๋Š” ์‹ค์ œ๋กœ ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋ฅผ ์„ ํƒ๊ธฐ ๋‚ด๋ถ€์— ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋Š” ์ข…์ข… ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

๊ทธ๋Ÿฌ๋‚˜.... ๋‹ค์‹œ ์•…๋งˆ์˜ ์˜นํ˜ธ์ž, ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๊ฐ€ ์ด์ œ ์„ ํƒ์ž ๋‚ด์—์„œ ํ‘œ์‹œ๋œ๋‹ค๋Š” ๋…ผ๋ฆฌ์— ๋”ฐ๋ผ ๊ฒฝ๋น„์›์€ ์ด๋ก ์ ์œผ๋กœ ๋™์ผํ•œ ์›์น™์„ ๋”ฐ๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

.button {
  .inline-block();
  .fix-ie-left-padding();
  .shadow(0, 2px, rgba(0, 0, 0, @buttonShadowOpacity));
  .border: 1px solid @buttonBorderColor;

  background-color: @coreBackgroundColor;

  <strong i="9">@when</strong> (green(@coreBackgroundColor) > 50%) {
    background-color: darken(<strong i="10">@coreBackgroundColor</strong>, 20%);
  }
  <strong i="11">@when</strong> (red(@coreBackgroundColor) > 30%) {
    background-color: darken(<strong i="12">@coreBackgroundColor</strong>, 15%);
  }
  <strong i="13">@when</strong> (blue(@coreBackgroundColor) > 25%) {
    background-color: darken(<strong i="14">@coreBackgroundColor</strong>, 8% );
  }
}

or

.button {
  .inline-block();
  .fix-ie-left-padding();
  .shadow(0, 2px, rgba(0, 0, 0, @buttonShadowOpacity));
  .border: 1px solid @buttonBorderColor;

  background-color: @coreBackgroundColor;  
  background-color: darken(<strong i="15">@coreBackgroundColor</strong>, 20%) when (green(@coreBackgroundColor) > 50%) ;
  background-color: darken(<strong i="16">@coreBackgroundColor</strong>, 15%) when (red(@coreBackgroundColor) > 30%);
  background-color: darken(<strong i="17">@coreBackgroundColor</strong>, 8% ) when (blue(@coreBackgroundColor) > 25%);
}

if๋ณด๋‹ค ์„ ์–ธ์ ์ด๋ฉฐ ๊ธฐ์กด LESS์— ๋” ๊ฐ€๊นŒ์šด ๊ตฌ๋ฌธ์ด๋ฉฐ ๊ฐ ๋ช…๋ น๋ฌธ์„ ๋…๋ฆฝ์ ์œผ๋กœ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค(LESS / CSS๊ฐ€ ์ •์˜๋œ ๊ฒƒ์ฒ˜๋Ÿผ).

๋Œ€์•ˆ์œผ๋กœ(๋˜๋Š” ์ด์— ์ถ”๊ฐ€ํ•˜์—ฌ) ์œ ์‚ฌํ•˜๊ฒŒ ๋ฏน์Šค์ธ์˜ ํ‰๊ฐ€๋ฅผ ํ‰๊ฐ€ ์ง€์ ์— ์ฒจ๋ถ€ํ•ฉ๋‹ˆ๋‹ค.

.button {
  .inline-block();
  .fix-ie-left-padding();
  .shadow(0, 2px, rgba(0, 0, 0, @buttonShadowOpacity));
  .border: 1px solid @buttonBorderColor;

  background-color: @coreBackgroundColor;  
  .backgroundMixin(<strong i="22">@coreBackgroundColor</strong>, 20%) when (green(@coreBackgroundColor) > 50%) ;
  .backgroundMixin(<strong i="23">@coreBackgroundColor</strong>, 15%) when (red(@coreBackgroundColor) > 30%);
  .backgroundMixin(<strong i="24">@coreBackgroundColor</strong>, 8% ) when (blue(@coreBackgroundColor) > 25%);
}

ํ‹€๋ฆผ์—†์ด ๋ฌธ ์ˆ˜์ค€ ๊ฐ€๋“œ๋Š” ๋ฏน์Šค์ธ ์ˆ˜์ค€ ๊ฐ€๋“œ IMO๋ณด๋‹ค ๋”/๋œ ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋…ผ๋ฆฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์˜ˆ์ œ 2์™€ 3์€ ์–ธ์–ด์— ๋œ ํ™•์žฅ์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒ๊ฐ/ํ† ๋ก ์„ ์œ„ํ•ด ๊ทธ๊ฒƒ์„ ๋˜์งˆ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„๋ฌด๋„ ๋‚ด ์„ ์–ธ ๊ฐ€๋“œ ์ œ์•ˆ์— ๋Œ€ํ•ด ๋งŽ์€ ๋ง์„ ํ•˜์ง€ ์•Š์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ;-)

์‚ฌ์‹ค ๋ณ„๋กœ ํ•  ๋ง์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์ข‹์€ ์ผ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค, IMO :)

์˜ˆ, ์ด๋ฏธ ๋ฏน์Šค์ธ์— ์žˆ๊ณ  ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๊ฐ€ ์š”์†Œ ๋‚ด๋ถ€์— ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ํ™•์žฅ ๋…ผ๋ฆฌ๊ฐ€ ํ•ฉ๋ฆฌ์ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. @lukeapage ์™€ @jonschlinkert ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

@matthewdl :+1:

๊ทธ๋“ค์ด ๋…ผ์˜ํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ด๋ฏธ ๊ทธ๋“ค์„ ์ง€์›ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค.... :)

@lukeapage #748 ๋ฌธ์ œ๋ฅผ ๋ง์”€ํ•˜์‹œ๋Š” ๊ฑด๊ฐ€์š”? ๊ทธ๋ ‡๋‹ค๋ฉด ๊ตฌ๋ฌธ์— ์•ฝ๊ฐ„์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ;-)

if ๋˜๋Š” @when ์— ๋Œ€ํ•œ ๋‚˜์˜ ์š•๊ตฌ๋ฅผ ํ‘œํ˜„ํ•˜๋ฉด์„œ ์ฐจ์ž„ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ€๋“œ๊ฐ€ ๋ณดํŽธ์ ์œผ๋กœ ๋” ์ข‹๊ณ  ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋œ ๋ณต์žกํ•œ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ ๋‹ค๋Š” ์˜๊ฒฌ์— ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ€๋“œ๊ฐ€ ์‹ค์ œ๋กœ ๋‚ด LESS ํŒŒ์ผ์„ ๋” ๋ณด๊ธฐ ํ‰ํ•˜๊ณ  ์ฝ๊ธฐ ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค์ง€๋งŒ if / @when ๋Š” ์‹ค์ œ๋กœ ์˜ˆ์™ธ์ ์œผ๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์‹ค์šฉ์ ์ธ ์ƒํ™ฉ์„ ์ฐพ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Guards ๋ฐ if / @when ์กฐ๊ฑด๋ฌธ์€ ๋ณธ์งˆ์ ์œผ๋กœ ๋„๊ตฌ์ผ ๋ฟ์ด๋ฉฐ ๋‘˜ ๋‹ค ์‚ฌ๋ฌผ์„ ์•„๋ฆ„๋‹ต๊ฑฐ๋‚˜ ์ถ”ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์— ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์  ์žฅ, LESS์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์„ ํƒ๊ธฐ ํ™•์žฅ ๊ธฐ๋Šฅ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ~300b .less ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์—ฌ 1GB ์ด์ƒ์˜ RAM์„ ์†Œ๋ชจํ•˜๊ณ  CPU๋ฅผ ๋ช‡ ๋ถ„ ๋™์•ˆ ํœ˜์ “๋Š” ์ƒํƒœ๋กœ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‚ด ๊ฒฐ์ •์€ ํ•˜๋‚˜์—์„œ ๋‘ ๊ฐœ์˜ ์Šคํƒ€์ผ์‹œํŠธ๋ฅผ ์ œ๊ณตํ•˜์—ฌ MediaWiki๊ฐ€ RTL์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์—์„œ ํŽ˜์ด์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. MediaWiki๋Š” LTR๋กœ ์Šคํƒ€์ผ์‹œํŠธ๋ฅผ ์ž‘์„ฑํ•œ ๋‹ค์Œ ๋‘ ๋ฒˆ์งธ RTL ์Šคํƒ€์ผ์‹œํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์Šคํƒ€์ผ์‹œํŠธ๋ฅผ ๋’ค์ง‘๋Š” ๋ฐฉ์‹์œผ๋กœ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. RTL์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด LTR์— ๋Œ€ํ•ด ์ง€์ •๋œ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์‹œ๋„ํ•˜๊ณ  ์žฌ์ •์˜ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‚˜๋Š” ๊ธฐ๋ณธ ์Šคํƒ€์ผ์„ main.less(๊ทธ๋ฆฌ๊ณ  ์Šคํƒ€์ผ์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ฐธ์กฐ๋˜๋Š” ํŒŒ์ผ)์— ์ž‘์„ฑํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ์ง์ ‘ ์ปดํŒŒ์ผ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๋‚˜๋Š” desktop.less์™€ mobile.less์˜ ๋‘ ๊ฐ€์ง€ ์Šคํƒ€์ผ์‹œํŠธ๋ฅผ ๊ฐ€์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋‘˜์€ ๋ชจ๋‘ <strong i="14">@mobile</strong>: true/false; , <strong i="16">@desktop</strong>: true/false; ์™€ ๊ฐ™์€ ํ•ญ๋ชฉ์„ ์„ค์ •ํ•˜๊ณ  ์‚ฌ๋ฌผ์˜ ํฌ๊ธฐ์™€ ๊ฐ™์€ ์ผ๋ถ€ ์ ์€ ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋‚ด main.less๊ฐ€ desktop.css์™€ mobile.css ๋‘˜ ๋‹ค๋กœ ๋ฐ”๋€Œ๊ณ  ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋กœ๋“œํ•  ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ/ํ…Œ์ŠคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์žฅ์น˜์—์„œ).

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

.navigation {
  color: @text-color;
  // [...]
  // Navigation is an accordion on the desktop so include our accordion styles
  .dummy() when (<strong i="21">@desktop</strong> = true) {
    .accordion-styles();
  }
  .dummy();
}

์ด ์ƒํ™ฉ์—์„œ @when ์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์ดํ•ดํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

.navigation {
  color: @text-color;
  // [...]
  // Navigation is an accordion on the desktop so include our accordion styles
  <strong i="26">@when</strong> (<strong i="27">@desktop</strong> = true) {
    .accordion-styles();
  }
}

์ €๋Š” ์‹ค์ œ๋กœ @when ๊ตฌ๋ฌธ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ mixin+guard๊ฐ€ ์ƒ์„ฑ๋œ ๋‹ค์Œ ๋ฐ”๋กœ ๋’ค์— ํฌํ•จ๋˜๋Š” ํ•ดํ‚น์œผ๋กœ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด ๋” ์ ์€ ํŒŒ์ผ์„ ์‚ฌ์ „ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ–ˆ์Šต๋‹ˆ๋‹ค.
๋งํ•  ํ•„์š”๋„ ์—†์ด, ์ „์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ์ „์ฒ˜๋ฆฌํ•œ๋‹ค๋Š” ์•„์ด๋””์–ด๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ์ข‹์€ ์ƒ๊ฐ์ฒ˜๋Ÿผ ๋“ค๋ฆฐ๋‹ค๋ฉด... ํ˜„์žฌ ์ „์ฒ˜๋ฆฌ๊ธฐ์— ๋ญ”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ง„์‹ค์€ ์ด๊ฒƒ์ด ๋‚ด ๋ฐ์Šคํฌํƒ‘/๋ชจ๋ฐ”์ผ ๊ธฐ์ˆ ์—๋งŒ ์ ์šฉ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ…Œ๋งˆ ์ฒด๊ณ„์—๋„ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์˜ ํ…Œ๋งˆ์™€ ํ•จ๊ป˜ ํ•˜๋‚˜์˜ ๋ฉ”์ธ ๋ ˆ์Šค(less) ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋” ์ ์€ ์ˆ˜์˜ ํŒŒ์ผ์„ ํฌํ•จํ•˜๊ณ  ์ƒ‰ ๊ตฌ์„ฑํ‘œ์™€ ๊ฐ™์€ ํ•ญ๋ชฉ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ๋” ์ ์€ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ƒ‰์ƒ ์กฐ์ •์€ ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ @use_horizontal_nav ์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜๋ฉด ์ฆ‰์‹œ ์ ˆ๋ฒฝ์—์„œ ๋„๋ง์น  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@dantman 1.5.0 ๋ฐ ์—ฐ๊ฒฐ๋œ CSS ์Šคํƒ€์ผ์˜ ๊ฒฝ๋น„์›์€ ์ด๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

.navigation {
  & when (<strong i="7">@desktop</strong> = true) {
    color:red;
  }
}

๋‹น์‹ ์˜ ์˜ˆ๋ฅผ ๋“ค์–ด ์„คํƒ•์ž…๋‹ˆ๋‹ค.

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

์ข‹์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์œผ๋กœ ๋ฌธ์„œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์†”์งํžˆ ๋งํ•ด์„œ @when ์™€ ๋น„๊ตํ•˜์—ฌ ๋งค์šฐ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด์ „์— .less ํŒŒ์ผ์—์„œ & when(...) ๋ฅผ ๋ณธ ์ ์ด ์žˆ๋‹ค๋ฉด ๋ฌด์—‡์ธ์ง€ ์ดํ•ดํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•œ๋ˆˆ์— ํ–ˆ๋‹ค. @when ์— ์„คํƒ•์œผ๋กœ & when() ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” @matthew-dean์— ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ์กฐ๊ฑด๋ถ€ ๊ตฌ์กฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด LESS ์ฝ”์–ด ํŒŒ์ผ์„ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•˜๊ธฐ๊ฐ€ ๋” ์–ด๋ ค์›Œ์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  .less ํŒŒ์ผ์€ ๋””๋ฒ„๊ทธํ•˜๊ธฐ ๋” ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ ์–ป์€ ๊ฒƒ์€ ์˜ˆ์ˆ  ์ž‘ํ’ˆ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ๋ง ๊ทธ๋Œ€๋กœ 10๋ถ„ ์ด๋‚ด์— LESS์˜ ๊ธฐ๋ณธ ์‚ฌํ•ญ์„ ์ดํ•ดํ•˜๊ณ  ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋‚˜๋Š” ์ค‘์ฒฉ ๋ฐ ํ˜ผํ•ฉ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค). ์กฐ๊ฑด๋ฌธ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋””์ž์ด๋„ˆ์™€ ์• ํ˜ธ๊ฐ€. ๊ฐ€๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ IF ๋ฌธ์„ ๋ชจ๋ฐฉํ•˜๊ฑฐ๋‚˜ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋ ค๋Š” ๊ฒƒ์€ ์กด์žฌํ•˜์ง€ ์•Š๊ณ  ์†”๋ฃจ์…˜์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ฌธ์ œ๋ฅผ ์•…ํ™”์‹œํ‚ค๋ ค๋Š” ๊ฒƒ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๊ฐ€ ์ปดํŒŒ์ผํ•˜๊ธฐ ์ „์— LESS ํŒŒ์ผ์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ๋ณต์žก์„ฑ๊ณผ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋” ๋‚˜์€ ์ œ์–ด, ์œ ์—ฐ์„ฑ ๋ฐ ๋ณต์žก์„ฑ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด PHP์™€ ๊ฐ™์€ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋” ์ ์€ ์ˆ˜์˜ ํŒŒ์ผ์„ ์‚ฌ์ „ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€์žฅ ์ •ํ™•ํ•˜๊ฑฐ๋‚˜ ํŽธ๋ฆฌํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ด๊ฒƒ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ƒ์ƒ๋ ฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์กฐ๊ฑด๋ถ€, ์Šค์œ„์น˜, ๋ฐฐ์—ด ๋ฐ PHP์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฉ‹์ง„ ํ•ญ๋ชฉ์ด ์žˆ๋Š” ๋ฏธ์นœ ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” "myfile.less.php"๋ผ๋Š” ํŒŒ์ผ์ด ์žˆ๊ณ  ๊ทธ ".less.php" ํŒŒ์ผ์—์„œ ๋‹ค๋ฅธ ํŒŒ์ผ์„ ๋ฑ‰์–ด๋‚ธ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ตœ์ข… LESS ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” "myfile.less"๋ผ๊ณ  ํ•˜๋ฉฐ, ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด PHP๋กœ ๋ชจ๋“  ์„œ๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ์ฟผ๋ฆฌํ•˜๊ณ , @imports์—์„œ ๋‚ด ์ƒˆ .less ํŒŒ์ผ์— ํฌํ•จํ•˜๊ฑฐ๋‚˜ ์ œ์™ธํ•  ํ•ญ๋ชฉ์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ์ด์ƒ ๋งŽ์€ ์–‘์˜ ์–ด๋ฆฌ์„์€ ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. LESS ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  IF ๋˜๋Š” Switch ๊ตฌ์กฐ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ธฐ ์œ„ํ•ด ๋ณด๊ธฐ ํ‰ํ•˜๊ณ  ์ฝ๊ธฐ ์–ด๋ ค์šด ์–ด๋ฆฌ์„์€ ๊ฐ€๋“œ๋ฅผ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์›Œํฌํ”Œ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1- ์บ์‹œ ๋งŒ๋ฃŒ ์—ฌ๋ถ€ ํ™•์ธ
1- ๋ชจ๋“  ํŒŒ์ผ ".less.php" ํŒŒ์ผ์„ ์ฐพ์•„ ์‚ฌ์ „ ์ฒ˜๋ฆฌํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ํ˜ธ์ถœ
2- ๋ชจ๋“  ".less" ํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ํ˜ธ์ถœ
3- ์—…๋ฐ์ดํŠธ ์บ์‹œ

@enav ๋‚˜๋Š” ๊ฒฉ๋ ฌํ•˜๊ฒŒ ๋™์˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด 2๊ฐœ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๋…ธ๋“œ์˜ ์ƒ๋‹จ ๊ธฐ๋ฐ˜ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์†”๋ฃจ์…˜์—์„œ ๋” ์ ์€ ๊ฐœ๋ฐœ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

@dantman ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์€ ์‚ฌํ•ญ์ด ์ƒ๋‹นํžˆ ๋งŽ์ด ์žˆ์œผ๋ฉฐ ์˜ˆ, ๋ฌธ์„œํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์„œ๋ฅผ ํ™•์žฅํ•˜๊ณ  ์›น ์‚ฌ์ดํŠธ๋ฅผ ํ›จ์”ฌ ๋” ์ข‹๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด less-docs์—์„œ ์ง„ํ–‰ ์ค‘์ธ ๋…ธ๋ ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์— ๋ฌธ์ œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@lukeapage , ๋„ค, ์ตœ๊ทผ์— ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ณ€๊ฒฝ ๋กœ๊ทธ๋ฅผ ํ›‘์–ด๋ณด๊ณ  svg-gradient ๋ฐ ์†์„ฑ ๋ณ‘ํ•ฉ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด & when ... ๋Š” ๋ฌธ์„œํ™”๋œ ๋‘ ๊ธฐ๋Šฅ & ๊ณผ CSS Guards ์˜ ๋‹จ์ˆœํ•œ ์กฐํ•ฉ์ผ ๋ฟ์ด๋ฏ€๋กœ ์ด๋ฏธ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ—Œ์‹ ์  ์ธ ์˜ˆ๋Š” ๋ฌผ๋ก  ํ•ด๋ฅผ ๋ผ์น˜ ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@seven-phases-max, ๋‚˜๋Š” ๊ทธ ๋ฌธ์„œ๋ฅผ ์•Œ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณด๊ธฐ์—๋Š” "์ด๊ฒƒ์€ ๊ณง lesscss.org ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ์ด๋™๋ฉ๋‹ˆ๋‹ค! ๋ชจ๋“  ๊ฒƒ์ด ํ™œ์„ฑํ™”๋  ๋•Œ๊นŒ์ง€ ์ด ์‚ฌ์ดํŠธ์— ์—ฐ๊ฒฐํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค." ๋…ผํ‰. ๊ทธ๋Ÿฐ ๊ฒƒ์ด ์ž‘์—… ์ค‘์ด๋ผ๋Š” ๊ฒƒ์„ ์•„๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์•„๋Š” ์œ ์ผํ•œ ๋ฌธ์„œ์ธ lesscss.org์˜ ํ˜„์žฌ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์—ˆ๊ณ  ํ˜„์žฌ๋Š” ๊ฐ€๋“œ๋ฅผ mixin ๊ธฐ๋Šฅ์œผ๋กœ๋งŒ ๋ฌธ์„œํ™”ํ–ˆ์œผ๋ฉฐ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ œ์•ˆํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๊ฒฝ๋น„์›์€ ์ด๊ฒƒ๋งŒํผ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. :(

์ด๊ฒƒ์€ ํ•„์ˆ˜ ๊ธฐ๋Šฅ์ด๋ฉฐ scass์—๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์— ๋Œ€ํ•ด +1

์˜ค๋Š˜ ์ด ๋Œ“๊ธ€์ด ์ด ์ด์Šˆ๊ฐ€ ๊ณต๊ฐœ๋œ ์ง€ ๋ช‡ ๋…„ ํ›„์— ์ œ๊ธฐ๋œ ๊ฒƒ์ด๋ฏ€๋กœ ์ง€๊ธˆ ๋‹น์žฅ ์ƒ๊ฐ๋‚˜๋Š” ํ•œ ๊ฐ€์ง€๋ฅผ ์ง€์ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์›๋ž˜ ํ† ๋ก ์—์„œ @when ์— ๋Œ€ํ•œ ์ €ํ•ญ ์ค‘ ์ผ๋ถ€๋Š” ์ถ”๊ฐ€ ๊ทœ์น™์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ธˆ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๊ทธ๋Ÿด ํ•„์š”๊ฐ€ ์—†์—ˆ๋‹ค.

์ด ๋‘ ๋ธ”๋ก์ด ๊ฐ™๋‹ค๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜๋ฉด:

.a {
  & .b { color: blue; }
}
.a {
  .b { color: blue; }
}

๊ทธ๋Ÿฌ๋ฉด ์ด ๋‘ ๋ฌธ์žฅ๋„ ํŒŒ์„œ์— ์˜ํ•ด ๋™๋“ฑํ•˜๊ฒŒ ๋ฐ›์•„๋“ค์—ฌ์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

.a {
  & when (1=1) { color: blue; }
}
.a {
  when (1=1) { color: blue; }
}

& when ์ด์™ธ์˜ ์ด์œ ๊ฐ€ ์—†๋‹ค๋ฉด ๊ตฌ๋ฌธ์ƒ ์ •๋ง ์–ด์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. & ๋ฅผ ์ƒ๋žตํ•˜์—ฌ ์—ฌ์ „ํžˆ ๋ถ€๋ชจ ์„ ํƒ๊ธฐ์™€ ํ•จ๊ป˜ ์„ ํƒ๊ธฐ ์กฐ์ธ์„ ์•”์‹œํ•˜๋ฏ€๋กœ ๋ถ€๋ชจ ์„ ํƒ๊ธฐ์— ๋Œ€ํ•œ ๋ณดํ˜ธ๋ฅผ ์•”์‹œํ•˜๊ธฐ ์œ„ํ•ด & ๋ฅผ ์ƒ๋žตํ•˜๋Š” ๊ฒƒ์€ ๋„์•ฝ์ฒ˜๋Ÿผ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ธ”๋ก ๋ฃจํŠธ ๊ธฐ๋Šฅ์€ ์ด์ œ ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํŒŒ์„œ์—์„œ ํ—ˆ์šฉ๋˜๋ฏ€๋กœ ๋” ์ด์ƒ 2013๋…„์ฒ˜๋Ÿผ ์ด์ƒํ•ด ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์„ ๋‹ค์‹œ ์—ด ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ #2072๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

when (1=1) { color: blue; }

๋‘ ๊ธ€์ž ๊ฒฝ์ œ๋ฅผ ์œ„ํ•ด ๊ฑฐ๋Œ€ํ•œ ํ˜ผ๋ž€ ์ƒ์ž๋ฅผ ์—ฌ๋Š” ๊ฒƒ?

๊ฒฝ๋น„์›์€ ์ด๊ฒƒ๋งŒํผ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋œฌ๊ธˆ์—†์ด ๋ถˆํ•ฉ๋ฆฌํ•œ ๋Œ“๊ธ€์„ ๋‹ฌ ๊ฐ€์น˜๋„ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์œ„์น˜์—๋Š” ๋’ค์— ๋ฌด์–ธ๊ฐ€๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ฑฐ์˜ ๋ชจ๋“  ์–ธ์–ด์—์„œ ๋‹จ์ผ ์กฐ๊ฑด ์—†์ด _anything_์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์กฐ๊ฑด๋ถ€ ์ฝ”๋“œ๊ฐ€ ์ ˆ๋ฆ„๋ฐœ์ด์ด๊ณ  if ๊ฐ€ ์–ด๋ฆฌ์„๋‹ค๊ณ  ๋งํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค).

์ด๊ฒƒ์„ ๋‹ค์‹œ ์—ด ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ when (1=1) { color: blue; } ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Errr... ์•„๋‹ˆ ์šฐ๋ฆฌ๋Š”?

๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๋ž˜์•ผ ํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๊ณ  ๋๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฐ๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ ์š”์ฒญ์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์„ธ์š”(๋ฏธ์•ˆํ•ฉ๋‹ˆ๋‹ค. ์™„๋ฃŒํ•˜๊ธฐ ์ „์— ์‹ค์ˆ˜๋กœ Enter๋ฅผ ํด๋ฆญํ–ˆ์Šต๋‹ˆ๋‹ค)

๊ทธ๋ž˜์„œ ์ด๊ฒƒ์„ #2072์— ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

@seven-phases-max

ํ•ด๋‹น ๋ฌธ์ œ๋Š” "๋ณดํ˜ธ๋œ ์ž์ฒด ์‹คํ–‰ ๋ธ”๋ก ๋‚ด์—์„œ ๋ณ€์ˆ˜ ์žฌ์ •์˜ ํ—ˆ์šฉ"์ด๋ผ๊ณ  ํ•˜๋ฉฐ ํ•ด๋‹น ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋งจ ์•„๋ž˜์˜ ์ ‘์„  ํ† ๋ก ์—๋Š” select/case ๋ฐ vbscript์™€ ์œ ์‚ฌํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. iif([ifcond], [then], [else]) ํ† ๋ก ์„ ์œ„ํ•œ ๋” ๋…ผ๋ฆฌ์ ์ธ ํ”ฝ์—…์ผ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์•Œ๋ชธ์ผ ๋•Œ ๊ทธ ์ด์ƒ์œผ๋กœ ๊ธฐ๋Šฅํ•ฉ๋‹ˆ๋‹ค. Buuut... ์•„๋งˆ๋„ when () vs & when () ์งˆ๋ฌธ์œผ๋กœ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋กœ ์ œ๊ธฐ๋˜์–ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

when() vs & when() ์งˆ๋ฌธ๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ์ด๊ฒƒ์— ๋Œ€ํ•ด ์‹ฌ๊ฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค, ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์ •ํ™•ํžˆ ๋ฌด์—‡ ๋•Œ๋ฌธ์—? $#$ & ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด when ๊ฐ€ if $ ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋ชจ๋“  ์ด์œ ๋Š” #2072 ์ฐธ์กฐ). ๊ทธ๋Ÿฌ๋‹ˆ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ๋๋‚ด์„ธ์š”.

์ด๋ด, ํ•œ ๋‹จ๊ณ„ ๋‚ฎ์ถ”์–ด ์ค„ ์ˆ˜ ์žˆ๋‹ˆ? ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ํ™”๊ฐ€ ๋‚œ๋‹ค๋ฉด ์ž ์‹œ ์‹œ๊ฐ„์„ ๋‚ด์–ด ๋‚˜์ค‘์— ๋‹ค์‹œ ์™€์„œ ๋‚ด๊ฐ€ ์ƒˆ ํ˜ธ์— ๊ฒŒ์‹œํ•œ ์ด์œ ๋ฅผ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. ์ด๋Ÿฌํ•œ ์ตœ์ดˆ์˜ ๋…ผ์˜ ์ดํ›„ ๋ช‡ ๊ฐ€์ง€ ์‚ฌํ•ญ์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ถ„ ๋‚˜์˜๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ๊ทธ๋Ÿฐ ๊ฑด ์•„๋‹ˆ์—ˆ์–ด์š”.
๋‚˜์˜:

๊ทธ๋Ÿฌ๋‹ˆ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ๋๋‚ด์„ธ์š”.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹ต๋ณ€์— ๋ถˆ๊ณผํ–ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ํ—ˆ์šฉํ•˜๊ณ  ๋๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@seven-phases-max ์ข‹์•„์š”, ํ…์ŠคํŠธ์—์„œ ํ†ค์ด ์†์‹ค๋ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ๋‚˜๋Š” ์ด ์•„์ด๋””์–ด์— ํฌ๊ฒŒ ์ง‘์ฐฉํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ ์ „๋ฐ˜์ ์œผ๋กœ ๊ธฐ์กด์˜ @when ์ œ์•ˆ์ด ์–ด์จŒ๋“  ๋” ๋‚ซ์Šต๋‹ˆ๋‹ค/๋” ๋‹ค์žฌ๋‹ค๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” 'sass'๊ฐ€ ๋œ๋ณด๋‹ค ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์ด๋ฏธ if-else๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ •๋ง ์–ด๋ ต๊ณ  ๋งŽ์€ ์ค„์˜ ์ฝ”๋”ฉ์ด ์ ์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜์ง€๋งŒ ํ•„์š”๋ฅผ ์™„์ „ํžˆ ์ฑ„์šฐ์ง€ ๋ชปํ•  ๋•Œ. ๋˜ํ•œ ๋ฃจํ”„๋ฅผ ๋” ์ ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ ์–ธ์–ด์—๋Š” ๊ณ ์œ ํ•œ ๊ธฐ๋Šฅ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

less
scss

@aukgit ์ž‘์—…์— ์ ํ•ฉํ•œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. SCSS๊ฐ€ ๋‹น์‹ ์—๊ฒŒ ๋” ์ ํ•ฉํ•˜๋‹ค๋ฉด ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. Sass์™€ Less๋Š” ๋งค์šฐ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.

@matthew-dean์€ ๋ช‡ ๋‹ฌ ๋™์•ˆ ๋œ ๋ฐฐ์šฐ๊ณ  '์ ์€' ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋” ๋‚˜์€ ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์šฐ๋ฆฌ ๋ชจ๋‘์—๊ฒŒ ์†ํ•ด์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ถ€ํŠธ์ŠคํŠธ๋žฉ์ด ๋œ์—์„œ 'sass'(https://github.com/twbs/bootstrap/tree/v4-dev)๋กœ ์ด๋™ํ•œ ์ด์œ ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค(์ดˆ๊ธฐ ์ด์œ ๋Š” ์ปดํŒŒ์ผ ์†๋„๊ฐ€ ๋” ๋น ๋ฆ„). ์ดˆ๊ธฐ ์†Œ์Šค๊ฐ€ 'less'์— ์žˆ๋Š” ๋ฐ˜๋ฉด. ์ด์ œ ๊ทธ๋“ค์€ ์›๋ž˜ ์†Œ์Šค๋ฅผ 'sass'๋กœ ์ž‘์„ฑํ•œ ๋‹ค์Œ less๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค(๋ฐ˜๋Œ€๋กœ ๊ทธ ๋ฐ˜๋Œ€).

๋˜ ๋‹ค๋ฅธ ํ•œ๊ฐ€์ง€ :

"์˜ฌ๋ฐ”๋ฅธ ์ž‘์—…์„ ์œ„ํ•œ ์˜ฌ๋ฐ”๋ฅธ ๋„๊ตฌ"

์—ฌ๊ธฐ์— ์ ์šฉํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค

๋œ | Scss | ์Šคํƒ€์ผ๋Ÿฌ์Šค ์œ ์‚ฌ ํ”„๋กœ์ ํŠธ . ๋‹น์‹œ ์œ ํ–‰ํ–ˆ๋˜ ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•˜์—ฌ ์ด์ œ๋Š” '์ ์€' ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์Šค์Šค๋กœ๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ์‹ถ์–ดํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

'less' ๋’ค์— ์žˆ๋Š” ์•„์ด๋””์–ด๋Š” ์ ๊ฒŒ ์“ฐ๊ณ  ๋” ๋งŽ์ด ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋”˜๊ฐ€์—์„œ ๊ฐ์†Œํ•˜์ง€๋งŒ ์–ด๋”˜๊ฐ€์—์„œ ๋” ๋งŽ์€ ์“ฐ๊ธฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

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

Fanboyish ๊ตฌ์‹ ์„ ์ „. ์ด๋Ÿฌํ•œ ํŽธํ–ฅ๋˜๊ฑฐ๋‚˜ ๋‹จ์ˆœํžˆ ์ž˜๋ชป๋œ ์ง„์ˆ ์„ ๋ชจ๋‘ ์ฃผ์žฅํ•˜๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„ ๋‚ญ๋น„์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ:

์ •๋ง ๋ณต์žกํ•œ ์กฐ๊ฑด๋ถ€ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

๋„ค, "์ŠคํŒŒ๊ฒŒํ‹ฐ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค" - ๋ฐ”๋กœ ์ด๋ ‡ ์Šต๋‹ˆ๋‹ค . ์ด์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค๋ฉด ์‹ค์ œ๋กœ Less๋Š” ํ™•์‹คํžˆ ๋‹น์‹ ์˜ ๋„๊ตฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋‚˜๋Š” "less"๊ฐ€ sass ๋ฐ stylus์™€ ๋งค์šฐ ๋‹ค๋ฅธ ๊ฒƒ์„ 'x'ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฒƒ๋“ค์€ ๋น„์Šทํ•œ ์ผ์„ ํ•˜๋Š” ๋ฐ˜๋ฉด 'less'๋Š” ๊ทธ๊ฒƒ์ด ๋น„์Šทํ•œ ์ข…๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋ผ๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. :)

@aukgit

๋‚˜๋Š” "less"๊ฐ€ sass ๋ฐ stylus์™€ ๋งค์šฐ ๋‹ค๋ฅธ ๊ฒƒ์„ 'x'ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

_์™œ_ ๋˜‘๊ฐ™์ด ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ๋””์ž์ธ ๊ฐ„์˜ ์ฃผ์š” ์ฐจ์ด์ ์„ ์ฐพ์œผ๋ ค๋ฉด [1] ๋ฐ [2] ์˜ˆ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ž˜์„œ ๋‹น์‹ ์€ ๊ทธ ๊ฐœ๋…์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์•„๋ฌด๋„ ๋‹น์‹ ์ด ์ข‹์•„ํ•˜์ง€ ์•Š๋Š” ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฐ•์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์ œ ์•Œ๊ฒ ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ •๋ง์ด์ง€, ์ •๋ง ๊ฐ€์žฅ ์ž˜๋ชป ์ดํ•ด๋˜๋Š” ์–ธ์–ด์ž…๋‹ˆ๋‹ค. Douglas Crockford๊ฐ€ ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋„ ๊ทธ๋ ‡๊ฒŒ ์˜คํ•ด๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‚ฌ๋žŒ๋“ค์€ js์—์„œ ์‹ค์ˆ˜๋ฅผ ํ•˜์ง€๋งŒ ๋งŽ์€ ์ธ์‹์ด ์žˆ์Šต๋‹ˆ๋‹ค. 'Less'์˜ ๊ฒฝ์šฐ ์ฒซ ํŽ˜์ด์ง€(less.org)์— ๋ฌด์—‡์ด ๋” ์ ๊ณ  ๋ฌด์—‡์ด ๊ทธ๋ ‡์ง€ ์•Š์€์ง€ ์„ค๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

mixen์„ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค :

๋” ์ ์€:

.if-value-present(@attribute; <strong i="7">@value</strong>: '') {
    .x (@value) when not (<strong i="8">@value</strong> = '') {
        @{attribute}: @value;
    }

    .x(@value);
}

.if-value-present-multi(@attributes; @values) {
    .iter(@i) when (<strong i="9">@i</strong> > 0) {
        .iter(<strong i="10">@i</strong> - 1);
        // loop

        <strong i="11">@attr</strong>: extract(<strong i="12">@attributes</strong>, @i);
        <strong i="13">@value</strong>: extract(<strong i="14">@values</strong>, @i);

        .if-value-present(<strong i="15">@attr</strong>, @value);
    }

    <strong i="16">@len</strong>: length(@values);
    .iter(@len);
}
.x {
    <strong i="17">@var</strong>: c1,c2, c3;
    <strong i="18">@val</strong>: v1, '', 'wddww';
    .if-value-present-multi(@var;@val);
}
.x{
    .if-value-present(content, 'new val');
}

CSS ์ถœ๋ ฅ:

.x {
  c1: v1;
  c3: 'wddww';
}
.x {
  content: 'new val';
}

'์ ์€' ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋” ๋‚˜์€ ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ ๋ชจ๋‘์—๊ฒŒ ์†์‹ค์ž…๋‹ˆ๋‹ค.

"๋‚ด๊ฐ€ ์›ํ•˜๋Š” X ๊ธฐ๋Šฅ์ด ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค" == "๋” ์ ์€ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ๋” ๋‚˜์€ ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š๋Š”๋‹ค"๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ๋ฅผ ์–ด๋””์—๋„ ๋ฐ๋ ค๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ œ์–ด ํ๋ฆ„์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด Github์— ๋Œ€ํ•ด ๋ช‡ ๊ฐ€์ง€ ๋…ผ์˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ์ด ์Šค๋ ˆ๋“œ๋Š” ๊ฑฐ๋ถ€๋˜์ง€ ์•Š๊ณ  #2072์— ๋ณ‘ํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ซํžŒ 3๋…„ ๋œ ์Šค๋ ˆ๋“œ์— ๋Œ“๊ธ€์„ ๋‚จ๊ฒผ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ #2072์™€ ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๋ณธ์งˆ์ ์œผ๋กœ ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋˜ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋” ๋‚˜์€ ๊ธฐ๋Šฅ์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

Less์—๋Š” _more_ ๊ธฐ๋Šฅ์ด ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์˜๋„์ ์œผ๋กœ ์„ค๊ณ„๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹น์‹ ์ด ํ•˜๋ฃจ์— Less๋ฅผ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋ฉฐ Less์˜ ๊ธฐ๋Šฅ์€ ์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ 99%๋ฅผ ์ปค๋ฒ„ํ•ฉ๋‹ˆ๋‹ค. Sass๋Š” ํ•™์Šต ๊ณก์„ ์ด ๋” ๊ฐ€ํŒŒ๋ฆ…๋‹ˆ๋‹ค. Sass๋Š” ๊ธฐ๋Šฅ์ด ๋„ˆ๋ฌด ๋งŽ์•„ ๊ณ„์† ์ปดํŒŒ์ผํ•˜๋ ค๋ฉด ์ €์ˆ˜์ค€ C ๊ธฐ๋ฐ˜ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ๋นŒ๋“œํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋Œ€๋‹จํ•œ ์„ฑ๊ณผ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฒฐ๊ตญ ์Šคํƒ€์ผ ์‹œํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ํ›Œ๋ฅญํ•œ ์ฆ๊ฑฐ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

์ด์ œ ๊ทธ๋“ค์€ ์›๋ž˜ ์†Œ์Šค๋ฅผ 'sass'๋กœ ์ž‘์„ฑํ•œ ๋‹ค์Œ less๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค(๋ฐ˜๋Œ€๋กœ ๊ทธ ๋ฐ˜๋Œ€).

์‚ฌ์‹ค์ด์ง€๋งŒ ์ด๋Š” ์—ฌ๋Ÿฌ ์š”์ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ ๊ทธ ์š”์ธ์ด ๋ฌด์—‡์ธ์ง€ ๋ฌผ์–ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ Less ์‚ฌ์šฉ์ž๋ฅผ ํฌ๊ธฐํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ˆ˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚  Less์—์„œ Bootstrap์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

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

(์ด๊ฑด ์‚ฌ์‹ค ์ข€ ๋œฌ๊ธˆ์—†์ง€๋งŒ ๊ทธ๋ƒฅ ๊ถ๊ธˆํ•ด์„œ์š”)

<strong i="7">@var</strong>: c1, c2, c3;
<strong i="8">@val</strong>: v1, '', 'wddww';

๊ทธ๋ฆฌ๊ณ  .if-value-present-multi ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ ์™ธ์— ์ด๋Ÿฌํ•œ ๋ณ€์ˆ˜์˜ ์šฉ๋„๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
(๊ทธ๋ฆฌ๊ณ  _if_ ์ด ๋ณ€์ˆ˜๋“ค์€ _are_ ๋‹ค๋ฅธ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋จ) ๋Œ€์‹ ์— ๋‹จ์ง€ ์†์„ฑ/๊ฐ’ ์Œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ง์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์˜ˆ:

<strong i="14">@rules</strong>:
    c1 v1,
    c3 'wddww';
   // no need for c2 since it has no effect

๊ฒŒ๋‹ค๊ฐ€ .x {content: 'new val'} ํ•„์š”ํ•œ ๊ฒฝ์šฐ .x {.if-value-present(content, 'new val')} ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ชฉ์ ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  ์•„๋ฌด ๊ฒƒ๋„ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด .x {.if-value-present(content)} ๋ฅผ ์ž‘์„ฑํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

(์†”์งํžˆ [1] ์„ ๋ณด์•˜์ง€๋งŒ - ๊ธ€์Ž„, ๋‹จ ํ•œ ๊ฐ€์ง€๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์•„๋ฌด ๊ฒƒ๋„ ์–ธ๊ธ‰ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. (_์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ธฐ ์œ„ํ•ด_) elements ๋ฐ lesshat ์™€ ๊ฐ™์€ ๊ณ ๋Œ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค - ๊ทธ๋ฆฌ๊ณ  ๋Œ€์‹  autoprefixer ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๋‹น๋ถ„๊ฐ„ CSS ์ „์ฒ˜๋ฆฌ๊ธฐ์— ๋Œ€ํ•ด ๊ณต๊ธ‰์—…์ฒด ์ ‘๋‘์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


์ด๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ "๊ธฐ๋Šฅ ์š”์ฒญ"์ด ๋“ค์–ด์˜ค๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค: "XY ๋ฌธ์ œ" . (๊ด€๋ จ ๋ถ„์•ผ์—์„œ ์œ ์‚ฌํ•œ ์‹คํŒจ์˜ ๋‹ค๋ฅธ ์ข‹์€ ์˜ˆ: #1400 ๋ฐ #1894, ๊ธฐ๋Šฅ์ด ์™„์ „ํžˆ ์“ธ๋ชจ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ(๋”ฐ๋ผ์„œ ๋‘˜ ๋‹ค ์—ด๋ฆฐ ์ƒํƒœ๋กœ ์œ ์ง€๋จ) ์‹ค์ œ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋ฌป๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. X)๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋Š” ์‹œ๋„์—์„œ Y๊ฐ€ ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์‚ฌ์šฉ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค.
๋งˆ์ง€๋ง‰ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€์ง€ ์•Š์€ ๊ฒฝ์šฐ 3๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ mixn์„ ๋งŒ๋“ค๋ ค๊ณ  ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด mixn ๋‚ด๋ถ€์— ์†์„ฑ์„ ์ƒ์„ฑํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์กฐ๊ฑด์ด ์œ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ https://github.com/aukgit/WeReviewProject/blob/master/WereViewApp/Content/Less/remixens/responsive/responsive-placements.less ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๋™์ผํ•œ mixen์„ ๋ฐ˜๋ณตํ•ด์„œ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„์ฃผ ์‰ฝ๊ฒŒ ์กฐ๊ฑด.

์ด์ œ์•ผ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@aukgit ์ด๋Ÿฌํ•œ ๋ฏน์Šค์ธ์„ ์‰ฝ๊ฒŒ ์ ‘์„ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://gist.github.com/matthew-dean/e617bc1f71528843ef9fa73d70427bcf

์‹œ๊ฐ„์„ ๋‚ด์–ด ๋„์™€์ฃผ์‹  @matthew-dean์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. :) ๋‚˜๋Š” ๋‹น์‹ ์—๊ฒŒ ๊ฐ€๋“ ์ฐจ ์žˆ์Šต๋‹ˆ๋‹ค.

:)

๋‚˜๋Š” 'sass'๊ฐ€ ๋œ๋ณด๋‹ค ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์ด๋ฏธ if-else๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‘ ์–ธ์–ด ๋ชจ๋‘ ๊ณ ์œ ํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋™์  ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์—†๊ณ  ๊ตฌํ˜„ํ•˜๊ธฐ๋ฅผ ๊บผ๋ฆฌ๋Š” ๊ฒƒ์ด ์ œ๊ฐ€ Sass์—์„œ Less๋กœ ์ „ํ™˜ํ•˜๊ณ  ์‹ถ์€ ์ฃผ๋œ ์ด์œ ์ž…๋‹ˆ๋‹ค. Less๋Š” ๋ช‡ ๋…„ ๋™์•ˆ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค!

๊ทธ๋Ÿฌ๋‚˜ FOR ๋ฃจํ”„ ๋˜๋Š” IF-ELSE ๋ฌธ๊ณผ ๊ฐ™์€ ๊ธฐ์กด ์ œ์–ด ๊ตฌ์กฐ ์˜ ๋ถ€์กฑ๊ณผ ์ง•๊ทธ๋Ÿฌ์šด ๊ตฌ๋ฌธ์ด ์ œ๊ฐ€ ์ด ์กฐ์น˜๋ฅผ ์ทจํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฐ”์œ„์™€ ๋”ฑ๋”ฑํ•œ ๊ณณ ์‚ฌ์ด์— ๋ผ์–ด์žˆ๋Š” ๋Š๋‚Œ...

@jslegers #249์—์„œ์™€ ๊ฐ™์€ ์ฃผ์„์ž…๋‹ˆ๋‹ค. Less๋Š” v1.x ์ดํ›„๋กœ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ์กฐ๊ฑด๋ถ€ ์ œํ•œ(์ตœ์‹  ๋ฒ„์ „์—์„œ๋Š” ์ ์  ๋” ๋งŽ์ด)์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

@seven-phases-max

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

์–ธ๊ธ‰ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š” ๊ฒƒ ์™ธ์— ๋‹ค๋ฅธ ์ œ์–ด ๊ตฌ์กฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฌธ์„œ์—์„œ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์–ด์จŒ๋“ , ๋ญ”๊ฐ€ ...

scss a { <strong i="11">@if</strong> $time == morning { color: red; } <strong i="12">@else</strong> if $time == afternoon { color: blue; } <strong i="13">@else</strong> { color: grey; } }

... ๋˜๋Š” ๊ฐ™์€...

scss <strong i="17">@each</strong> $author in $list .photo-#{$author} background: image-url("avatars/#{$author}.png") no-repeat

... ์•„๋‹ˆ๋ฉด ์ด๊ฑฐ...

scss <strong i="21">@for</strong> $i from 1 through 8 { $width: percentage(1 / $i) .col-#{$i} { width: $width; } }

... ๋‚ด ์ƒ๊ฐ์—๋Š” Sass์—์„œ ๋ณดํ˜ธ๋œ ๋ฏน์Šค์ธ์ด๋‚˜ Less์—์„œ ์žฌ๊ท€์ ์ธ ๋ฏน์Šค์ธ์œผ๋กœ ๋น„์Šทํ•œ ๊ฒƒ์„ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ฝ๊ธฐ ์‰ฝ๊ณ  ์šฐ์•„ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌํ•œ ๋ฌธ์žฅ์˜ ๋ถ€์กฑ๊ณผ (Sass์™€ ๋น„๊ตํ•˜์—ฌ) Less์˜ ์ „๋ฐ˜์ ์œผ๋กœ ์ฝ๊ธฐ ์–ด๋ ค์šด ๊ตฌ๋ฌธ์€ ๋‚ด๊ฐ€ Sass๋ฅผ ๊ณ ์ˆ˜ํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜๊ณ  ๋‚ด ํ”„๋กœ์ ํŠธ ์ค‘ ํ•˜๋‚˜์— Less๋ฅผ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ์กฐ์ฐจ ๊บผ๋ฆฌ๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ์ด์œ ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  Sass๊ฐ€ Less๋ณด๋‹ค ํ›จ์”ฌ ๋” ์ธ๊ธฐ๋ฅผ ์–ป์—ˆ๋‹ค๋Š” ์ ์„ ๊ณ ๋ คํ•  ๋•Œ, ์ €๋งŒ ๊ทธ๋ ‡๊ฒŒ ๋Š๋ผ๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.


@jslegers ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฒŒ์‹œํ•˜๊ธฐ ์ „์— ์ด๋ฏธ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ•ญ๋ชฉ์„ ์•Œ์•„๋ณด์‹ญ์‹œ์˜ค.
๋‚˜๋จธ์ง€(์ธ๊ธฐ ๋“ฑ) - ๋„ˆ๋ฌด ๋‹จ์ˆœํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋…ผ์˜ํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค(Stylus์—๋Š” ์ด ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ์žˆ๊ณ  ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?). ๊ฒŒ๋‹ค๊ฐ€ Less๋Š” ๋‹ค๋ฅธ CSS ์ „์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ๋Œ€์ฒดํ•˜๊ฑฐ๋‚˜ ๋ณต์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์„ ์–ธ๋œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ, ๊ฐ€์žฅ ํ”ํ•œ ์‹ค์ˆ˜๋Š” ๋ฌด์–ธ๊ฐ€์˜ ์ธ๊ธฐ๊ฐ€ ์ž‘๊ฐ€์˜ ์ผ์ฐจ์ ์ด์ž ์œ ์ผํ•œ ๋ชฉํ‘œ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ๋“ค์„ ๊ฒŒ์‹œํ•˜๊ธฐ ์ „์— ์ด๋ฏธ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด์‹ญ์‹œ์˜ค.

๋” ๋‚˜์€ ๋ฌธ์„œํ™”๋ฅผ ์‹œ๋„ํ•˜๊ฑฐ๋‚˜ ์‚ฌ๋žŒ๋“ค์ด ์ฐพ๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ์ฐพ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ ์ง์ ‘ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

๋‚˜๋จธ์ง€ (์ธ๊ธฐ ๋“ฑ) - ๋„ˆ๋ฌด ๋‹จ์ˆœํ™”๋œ ๋ฐฉ์‹์œผ๋กœ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋…ผ์˜ํ•˜๋Š” ๊ฒƒ์€ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค [...] ๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ, ๊ฐ€์žฅ ํ”ํ•œ ์‹ค์ˆ˜๋Š” ๋ฌด์–ธ๊ฐ€์˜ ์ธ๊ธฐ๊ฐ€ ์ž‘๊ฐ€์˜ ์ฃผ์š” ๋ชฉํ‘œ์ด์ž ์œ ์ผํ•œ ๋ชฉํ‘œ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ ์ €๋Š” ์ธ๊ธฐ๊ฐ€ ํ’ˆ์งˆ์ด๋‚˜ ์œ ์šฉ์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ•๋ ฅํ•œ ์ง€ํ‘œ๋ผ๊ณ  ์•”์‹œํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” ๊ทธ ๋ฐ˜๋Œ€์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜๋„ ์‚ฌ๋žŒ๋“ค์ด Less์—์„œ Sass๋กœ ์ด๋™ํ•˜๋Š” ์ด์œ ๋ฅผ ๋ณด๋ฉด ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค .

๊ฐœ์ธ์ ์œผ๋กœ ๊ฑฐ๊ธฐ์—์„œ ๋‚˜๋Š” 2012๋…„์„ ๊ณ„์‚ฐํ•˜์ง€๋„ ์•Š๊ณ  ์ผ๋ฐ˜์ ์ธ "๋‚˜๋Š” ๋‚ด PHP ์ŠคํŒŒ๊ฒŒํ‹ฐ๋ฅผ ์›ํ•œ๋‹ค"(์œ„์˜ ์ž˜๋ชป๋œ ๋„๊ตฌ์— ๋Œ€ํ•œ ๊ฒŒ์‹œ๋ฌผ ์ฐธ์กฐ) ์™ธ์—๋Š” ์•„๋ฌด ๊ฒƒ๋„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(์ด๋ฏธ ๋Œ€๋ถ€๋ถ„์˜ ์˜ˆ์ œ๊ฐ€ ํ˜„๋Œ€์ ์ธ Less์—์„œ๋Š” ๋งค์šฐ ์ปดํŒฉํŠธํ•˜๋‹ค๊ณ  ์•”์‹œํ–ˆ์ง€๋งŒ, ์ผ์–ด๋‚˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค).
ํ•˜์ง€๋งŒ ์‹ ๊ฒฝ์“ฐ์ง€ ๋งˆ์„ธ์š”. ๋ณดํ†ต ์ €๋Š” ๋ช…๋ฐฑํ•œ ์ž˜๋ชป๋œ ์ •๋ณด, ์™œ ์ผ์ด ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”์ง€์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ์˜๊ฒฌ์— ๋Œ€ํ•œ ํ† ๋ก ๋งŒ์„ ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์ธ์ ์œผ๋กœ ๊ฑฐ๊ธฐ์—๋Š” ํ‰์†Œ์˜ "PHP ์ŠคํŒŒ๊ฒŒํ‹ฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค" ์™ธ์—๋Š” ์•„๋ฌด๊ฒƒ๋„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Sass ๋Œ€์‹  Less๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ "PHP ์ŠคํŒŒ๊ฒŒํ‹ฐ"์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค(PHP๊ฐ€ ์ŠคํŒŒ๊ฒŒํ‹ฐ ์ฝ”๋“œ์˜ ์ „ํ˜•์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค๋ฉด ๋ถ„๋ช…ํžˆ ABAP ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•œ ๋ฒˆ๋„ ํ•˜์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค). ๊ธฐ๋ณธ ๋ณ€์ˆ˜์™€ ๋ฏน์Šค์ธ๋ณด๋‹ค, ํ•˜์ง€๋งŒ ๋‚˜๋Š” ์—ฌ๊ธฐ์„œ ๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๊ณ  ๊ธฐ๊บผ์ด ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๋ฏธ ์ด๋Ÿฌํ•œ ์˜ˆ์ œ์˜ ๋Œ€๋ถ€๋ถ„์ด ํ˜„๋Œ€์  Less์—์„œ ๋งค์šฐ ๊ฐ„๊ฒฐํ•ด์ง„๋‹ค๊ณ  ์•”์‹œํ–ˆ์ง€๋งŒ, ๋‹น์‹ ์€ ๊นจ์–ด๋‚˜๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ๋‚˜๋ฅผ ๊นจ์šฐ๊ณ  ๋‚˜์˜ ๋ฌด์ง€์—์„œ ๋ฒ—์–ด๋‚  ์ˆ˜ ์žˆ๋Š” ํ•œ๋‘ ๊ฐ€์ง€ ์†Œ์Šค๋ฅผ ์ œ๊ณตํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜์ง€ ์•Š์œผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋‚ด ์ž˜๋ชป์„ ์ฆ๋ช…ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋” ์‹ ๋‚˜๋Š” ์ผ์€ ๊ฑฐ์˜ ์—†์Šต๋‹ˆ๋‹ค. ์ œ ๊ฒฝํ—˜์ƒ ๊ทธ๊ฒŒ ์„ฑ์žฅํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค...

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