๋ณ์์ ๋ฐ๋ผ ์กฐ๊ฑด๋ถ 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;
}
}
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๊ฐ ์์ต๋๋ค. ์ ๋ง ์ด๋ ต๊ณ ๋ง์ ์ค์ ์ฝ๋ฉ์ด ์ ์ต๋๋ค. ์๋ํ์ง๋ง ํ์๋ฅผ ์์ ํ ์ฑ์ฐ์ง ๋ชปํ ๋. ๋ํ ๋ฃจํ๋ฅผ ๋ ์ ๊ฒ ๋ง๋ค ์ ์์ง๋ง ์ธ์ด์๋ ๊ณ ์ ํ ๊ธฐ๋ฅ์ด ์์ด์ผ ํฉ๋๋ค.
@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์์ ๋งค์ฐ ๊ฐ๊ฒฐํด์ง๋ค๊ณ ์์ํ์ง๋ง, ๋น์ ์ ๊นจ์ด๋๊ณ ์ถ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ ๋๋ฅผ ๊นจ์ฐ๊ณ ๋์ ๋ฌด์ง์์ ๋ฒ์ด๋ ์ ์๋ ํ๋ ๊ฐ์ง ์์ค๋ฅผ ์ ๊ณตํ๋ ค๊ณ ๋ ธ๋ ฅํ์ง ์์ผ์๊ฒ ์ต๋๊น?
๋๊ตฐ๊ฐ๊ฐ ๋ด ์๋ชป์ ์ฆ๋ช ํ๋ ๊ฒ๋ณด๋ค ๋ ์ ๋๋ ์ผ์ ๊ฑฐ์ ์์ต๋๋ค. ์ ๊ฒฝํ์ ๊ทธ๊ฒ ์ฑ์ฅํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋๋ค...
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์, ์๊ณ ์์ต๋๋ค. ํ์ง๋ง ํจ์ฌ ์ ๊ฒ ์์ฑํ๋ ๊ฒฝ์ฐ ์๋ฐฑ ๊ฐ์ .mixin์ ์์ฑํ๊ณ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค.
๋๋ mixin์ด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค. ๋ฏน์ค์ธ๋ ์ด ๊ธฐ๋ฅ์ผ๋ก ๋ง์ ํ์ ์ป์ ์ ์์ต๋๋ค.
์ ์ CSS๋ ์ผ๋ถ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฑฐ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋๋ฐ ์ ๊ทธ๋ ์ง ์์ต๋๊น?