SASS์์ LESS๋ก์ ์ ํ์ ๊ณ ๋ คํ๊ณ ์์ง๋ง "๊ธฐ๋ณธ ๋ณ์" ๊ธฐ๋ฅ์ด ์๋ค๋ ๊ฒ์ด ๊ฐ์ฅ ํฐ ์ฅ์ ๋ฌผ์ ๋๋ค(http://sass-lang.com/documentation/file.SASS_REFERENCE.html#variable_defaults_ ์ฐธ์กฐ).
์ด ๊ธฐ๋ฅ์ ๋ณ์๊ฐ ์ฌ์ฉ์๋ฅผ ์ํ ์ผ์ข ์ "API" ์ญํ ์ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก SASS ์ฝ๋๋ฅผ ๋ฐฐํฌํ ๋ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ์ด๋ฌํ ์ฌ์ฉ ์ฌ๋ก์์ ์ฌ์ฉ์๊ฐ ํด์ผ ํ ์ผ์ ์์ ์ด ๋ณ๊ฒฝํ๋ ค๋ ๊ธฐ๋ณธ๊ฐ์ ์ฌ์ ์ํ๊ธฐ ์ํด ๋ณ์๊ฐ ์์ ํฌํจ๋์ด ์๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค. ์ง์! ์ฌ์ ์๊ฐ ํ์ํ ๋ณ์๋ฅผ ํฌํจํ ์ ์๋ (์๋ง๋) ๋ง์ ํ์ผ์ ์์๋ฅผ ๋ง์ง์๊ฑฐ๋ฆฌ์ง ์์ต๋๋ค.
๊ตฌํ ์์ ์ ์์ํ๊ณ ์์ง ํ ์คํธ๋ฅผ ์์ฑํ์ง ์์์ง๋ง ์ด pull ์์ฒญ์ ํ ๋ก ์ ์์์ ์ผ๋ก ์ฌ์ฉํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. https://github.com/less/less.js/pull/1705
๋ค์ ๊ตฌ๋ฌธ์ ์ ํํ์ต๋๋ค.
?foo: value;
SASS ๋ฐฉ์๊ณผ ๋ฐ๋๋ก:
<strong i="13">@foo</strong>: value !default;
2๊ฐ์ง ์ด์ ๋๋ฌธ์ - ๋ ๊ฐ๊ฒฐํ๊ณ !default ๊ตฌ๋ฌธ์ ๋ฏธ๋์ ์ค๋ฅธ์ชฝ์์ ํํ์ ๊ตฌ๋ฌธ ๋ถ์์ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ๋ํ๋ผ ์ ์์ต๋๋ค(๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ํด ํ๋ฆด ์ ์์).
๋ด๊ฐ ์๊ฐํด ๋ธ ๊ตฌํ์ ๋๋ผ์ธ ์ ๋๋ก ๊ฐ๋จํ์ต๋๋ค. ์ค์ํ ๊ฒ์ ๋์น์ง ์์์ผ๋ฉด ํฉ๋๋ค. ์๊ฒฌ์ ๋ณด๋ด์ฃผ์๋ฉด ์ ๋ง ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
๊ฑด๋ฐฐ,
ํ
์
๋ฐ์ดํธ: ๋ฏธ๋์ ๋ฐฉ๋ฌธ์๋ฅผ ํผ๋ํ์ง ์๊ธฐ ์ํด ์ด ๊ฒ์๋ฌผ์ ์ด์ ๋๊ธ์ ์ ๊ฑฐํ์ต๋๋ค(์ฌ๊ธฐ์ "๋ณ์๊ฐ ์์ง ์ ์๋์ง ์์ ๊ฒฝ์ฐ ์ ์ํ๋ ๋ฐฉ๋ฒ" ์ง๋ฌธ์ ๋ตํ๋ ค๊ณ ํ์ผ๋ "XY ๋ฌธ์ "์ด๊ณ ์ ๋ต์ ๋ํ ์์ ์ ๋์ณค์ต๋๋ค. Sass-like !default
๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. Less์์๋ ํ์ํ ๊ธฐ๋ฅ("์ฌ์ฉ ํ ์ ์")์ด Less ๋ณ์๊ฐ ์๋ํ๋ ๋ฐฉ์์ผ๋ก ์ด๋ฏธ ์ ๊ณต๋๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฐ ๊ฒ์ ํ์ํ์ง ์์ต๋๋ค.
๋์ผํ ๋ณ์๋ฅผ ๋ ๋ฒ ์ ์ํ๋ฉด ๋ง์ง๋ง ์ ์ธ์ด ์ฐ์ ์ ์ฉ๋๋ฉฐ ์ ์ฒด ๋ฒ์์์ ์ ํจํฉ๋๋ค. ๋ฐ๋ผ์ ๋ ๋ค๋ฅธ ์ต์ ์ ๋ณ์๋ฅผ ์ ์์ ์ผ๋ก ์ ์ธํ๊ณ ์ฌ์ฉ์์๊ฒ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ค์ ๋ณ์๋ฅผ ํฌํจํ๋๋ก ์์ฒญํ๋ ๊ฒ์ ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ.๋ฆฌ์ค
<strong i="7">@width</strong>: 0;
.mixin {
width: @width;
}
user.less:
<strong i="11">@import</strong> "library.less"; //first declaration of <strong i="12">@width</strong>
<strong i="13">@width</strong>: 1; //this will override <strong i="14">@width</strong> defined previously
.class {
.mixin();
}
๋ค์์ผ๋ก ์ปดํ์ผ:
.mixin {
width: 1;
}
.class {
width: 1;
}
PR์ ๋ํ ํผ๋๋ฐฑ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ด๋ฌํ ์๋ฃจ์ ์ ์ฐ๋ฆฌ๊ฐ ์๋นํ ๊ฒ์ด ํ ๊ฐ์ง ๋๋ ๋ช ๊ฐ์ง ์์ ๊ฒ์ด๋ผ๋ฉด ์คํ ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ์๋ฃจ์ ์ด ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ์ ์๋ํ์ง ์๋ ์ด์ ์ ๋ํด ์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ๋ ํด๋์ค ๊ณ์ธต์ผ๋ก ๊ตฌํ๋ ๊ตฌ์ฑ ์์์ ํฐ ํ๋ ์์ํฌ๋ฅผ ๋ง๋ญ๋๋ค. ๊ธฐ๋ณธ ํ ๋ง์ ์์ฒด ํ์ผ์ ๊ฐ ๊ตฌ์ฑ ์์์ ๋ํ ๋ณ์๋ฅผ ์ ์ธํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฌ๊ธฐ์์ ์ด ๋ณ์๋ฅผ ์์ ํ๋ ค๋ ํ ๋ง๋ฅผ "ํ์"ํฉ๋๋ค. ์ฌ์ฉ์๋ ํ์์ ๋ฐ๋ผ ํ ๋ง๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค.
๋ํ ๋ณ์๋ ์ข ์ข ๋ค๋ฅธ ๋ณ์์์ "ํ์"๋ฉ๋๋ค. ๊ฐ์ฅ ๋์ ๋๋ ๊ฒ์ ๋ฒ ์ด์ค ์ปฌ๋ฌ์ ๋๋ค. ์ฐ๋ฆฌ๋ ํ ๋ง ๋ฐ ๊ณ ์ ํ ์์ ๋์๊ณผ ๊ฒฐํฉ๋ ๊ณต๊ฒฉ์ ์ธ ๋ณ์ ๊ฐ ์ ํ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ ์์์ ๋๊ท๋ชจ ํด๋์ค ๊ณ์ธต ๋ฌธ์ ์ ๋ํ ๋์์ ๋ ผ์ํ๋ ๋ฐ ๋ง์ ์๊ฐ์ ํ ์ ํ์ต๋๋ค.
์ง๊ธ๊น์ง ์ด๋ฌํ ๋ฌธ์ ์ ๋ํ ๊ฐ์ฅ ์ข์ ํด๊ฒฐ์ฑ ์ ๋ณ์๋ฅผ "!default"(Sass ์ฉ์ด๋ก)๋ก _ํญ์_ ์ ์ํ๋ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์๋ ์ด ๊ฐ์ด ์ถ๊ฐ ๊ฐ์ ๊ณ์ฐํ๋ ๋ฐ ์ฌ์ฉ๋๊ธฐ ์ ์ ๋จผ์ ๋ค์ด๊ฐ์ ๊ฐ์ ์ค์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์ฌ์ฉ์๊ฐ ํ์ด๋ฐ์ ๊ด๋ฆฌํ๊ธฐ๊ฐ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ์ด๊ฒ์ ๋ชจ๋ ํ ๋ง์ ๋ชจ๋ ๋ณ์์ ๋ํด ํญ์ ํด๋น๋๊ธฐ ๋๋ฌธ์ ์์์ ์ ์ํ ๊ฒ๊ณผ ๊ฐ์ ๊ตฌ๋ฌธ ๋ฌธ์ ๋ ์๋นํ ๋ถ๋ด๊ณผ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค.
๊ณ์ํ๋ฉด์ Less์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์ถ์ต๋๋ค. ๋๋ ์ฐ๋ฆฌ์ (๋น์ ์์ ์ผ๋ก?) ๋๊ท๋ชจ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์ธ์ด/๊ธฐ๋ฅ ์ธํธ๋ฅผ ํ์ฅํ๋ ๋ฐ ํ์ํ ๊ฒ์ด ๋ฌด์์ธ์ง ํ์ธํ๋ ๋ฐ ๋์์ด ๋ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋๋ ๋น์ ์ด ์ด๊ฒ์ ๋ณํฉํ๋ ๊ฒ์ ๊ณ ๋ คํ๊ฑฐ๋ ๋ณธ์ง์ ์ผ๋ก ๋ ์ ์ธ์ ์ธ ๋ช ๊ฐ์ง ๋์์ ์ ๊ณตํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋ฒ์ ํธ๋ฆญ์ ์ ์ฉํ๋ ๊ฒ์ ์ค์ ๋ก ์ฐ๋ฆฌ์๊ฒ ํจ๊ณผ๊ฐ ์์ต๋๋ค.
๊ทํ์ ์๊ฐ๊ณผ ๋ฐฐ๋ ค์ ๋ค์ ํ ๋ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
์คํธ๋ ์ดํธ ํด๋์ค ๋์ ๋ฏน์ค์ธ์ ์ ์ํ๋ ๊ฒ์ด ๋ ๋์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ธฐ๋ณธ ์คํ์ผ์ํธ ๋๋ ๋ค๋ฅธ ํ์ ํ ๋ง์์ ๋ณ์๋ฅผ ๋์ค์ ์ฌ์ ์ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ด ๋ด๊ฐ ๊ฐ์ ธ์จ ํ ๊ทธ๋ฆฌ๋์ ๊ฑฐํฐ ๋๋น์ ๊ฐ์ ๊ฒ์ ์ฌ์ ์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๋ช ํํ ํ๊ธฐ ์ํด ์ฌ๊ธฐ์๋ ๋ณ์์ ๋ํด์๋ง ์ด์ผ๊ธฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ธฐ๋ณธ ์คํ์ผ์ํธ๊ฐ ์์ต๋๋ค. ํ ๋ง๋น ํด๋์ค๋น ํ๋์ฉ ์์ต๋๋ค. :)
๊ทํ์ ์ ์์ ๋ฐ๋ฅด์ง ์์ ์๋ ์์ง๋ง ์๋ฅผ ๋ค์ด ํ ๋ง ๋ณ์ ํ์ผ ์ค ํ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
$panel-base-color: $neutral-light-color !default;
$panel-header-color: $base-color !default;
$panel-frame-border-width: 1px !default;
$panel-header-font-size: round($font-size * 1.15) !default;
$panel-body-border-color: $neutral-dark-color !default;
$panel-light-header-color: #000 !default;
$panel-light-header-background-color: #fff !default;
$panel-light-tool-background-image: 'tools/tool-sprites-dark' !default;
$panel-light-body-border-color: $neutral-dark-color !default;
$panel-ignore-frame-padding: true !default;
์ด ํ์ผ์ 4๊ฐ์ ๊ธฐ๋ณธ ํ ๋ง ์ฒด์ธ์ด ์๋ ํ ๋ง์ ๋ํ ๋ค์ํ ํจ๋ ๊ฐ์ ์ค์ ํฉ๋๋ค. ์ด๋ฌํ ๊ธฐ๋ณธ ํ ๋ง์๋ ํจ๋์ ๋ํ ๊ณ ์ ํ ๋ณ์ ๊ฐ์ด ์์ง๋ง ๋จผ์ ๋ก๋๋๋ฏ๋ก ์ฌ์ ์ํฉ๋๋ค. ์ฌ์ฉ์ ํ ๋ง๊ฐ ์ด ํ ๋ง์์ ํ์๋๊ณ ๊ณ ์ ํ ๊ฐ์ ์ ๊ณตํ์ง ์๋ ํ.
์ด ํจํด์ด _๋ง์ด_๋ฐ๋ณต๋ฉ๋๋ค:)
์ข์ต๋๋ค. ์ ๋ฉ์ธ less ์ํธ์์ @panel-base-color
๋ฅผ ์ฌ์ ์ํ์ง ์์ต๋๊น? LESS ๋ณ์๋ ์ ์ญ์ ์ด๋ฏ๋ก ๋ง์ง๋ง์ ๋ฐ์ํ๋ ๋ณ์๊ฐ ์น์์
๋๋ค.
<strong i="7">@import</strong> 'theme.less';
@panel-base-color: red;
์ด์ ํ ๋ง์ ์ฌ์ฉ๋ ๋ชจ๋ ํญ๋ชฉ์ด ์ฌ์ ์๋ฉ๋๋ค. ์๋ฌด๋ ์ด๊ฒ์ ๊ฐ์ ธ์ค๊ธฐ ์ฒด์ธ์์ ์ฌ์ ์ํ์ง ์์ผ๋ฉด ์๋ ์ค์ ๋์ด ์๋ ๊ฒ์ด ๊ธฐ๋ณธ๊ฐ์ด ๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ "๋ฉ์ธ ๋ฆฌ์ค ์ํธ"๊ฐ ์์ต๋๋ค. :) ์ฌ๋ฌ๋ถ์ ๋์๊ณผ ์ ์์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ํ์ง๋ง ๋ด๋ถ์ ์ผ๋ก ์ด ๋ฌธ์ ์ ๋ํด ๋ง์ ๋ ผ์๊ฐ ์์๊ณ ์ ์ ๋์ ์งํ๋๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์ฌ๊ธฐ์์ ์ ์ํ ๋๋ก ๊ธฐ๋ณธ ๋ณ์ ์ค์ ์ด ํ์ํ๋ค๊ณ ์๊ฐํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ Sass์ ์์ผ๋ฉฐ ๋ณต์ก์ฑ์ ์ค์ด๊ณ ์ฌ์ฉ์์๊ฒ ํ ๋ง๋ฅผ ๊ตฌ์ฑํ ๋ ์ ์ฐ์ฑ์ ์ ๊ณตํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ๋ค๋ ๊ฒ์ ์์์ต๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ด ์ด ํ ๋ฆฌํ์คํธ๋ ์ ์ฌํ ํ์ ์ํ์ด ๋ฐ์๋ค์ฌ์ง ๊ฒ์ด๋ผ๋ ์๋ฏธ์ธ์ง ๊ถ๊ธํฉ๋๋ค. ๋ถ์พํ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ์กฐ์ ํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
์ฐ๋ฆฌ๋ "๋ฉ์ธ๋ฆฌ์ค ์ํธ"๊ฐ ์์ต๋๋ค :)
์์ ๋ต๋ณ์์ "๊ทํ์ ๊ธฐ๋ณธ ์ํธ๊ฐ ์ ์ ์ํธ"๋ฅผ "์ฌ์ฉ์์ ์ํธ๊ฐ ์ ์ ์ํธ ์ค ํ๋"๋ก ๋ฐ๊พธ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์ง๊ธ๊น์ง SASS !default
(์ด๋ค ๊ตฌ๋ฌธ์ด๋ ๊ฐ์)๋ LESS์ ์กด์ฌํ์ง ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฐ๋ช
๋ ๊ฒ ๊ฐ์ต๋๋ค.
@dongryphon , ๋ฌผ๋ก ํ๋ฆด โโ์ ์์ง๋ง @SomMeri ์ @Soviut์ด ์ ์ํ ์๋ฃจ์
์ ์ฌ์ฉํ ์ ์๋ ์ด์ ๋ฅผ ์์ง ํ์
ํ์ง ๋ชปํ์ต๋๋ค.
๋ค๋ฅธ ๋ง๋ก ํ์๋ฉด, ๊ฐ์ ธ์ค์ง ์๊ณ ๋์ ๋ชจ๋ ๋ณ์๊ฐ ๊ฐ์ ์ํธ์ ์๋ค๊ณ ์์ํด ๋ณด์ญ์์ค. ์ด๊ฒ์ด ๋ฐ๋ก ์์ ์ด ํ๋ ์ผ์ ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ์ํฉ์์ ๋์ผํ ์ด๋ฆ์ ๊ฐ์ง ๋ ๊ฐ์ ๋ณ์ ์ ์ธ์ด ์๋ ๊ฒฝ์ฐ ์ํธ์ ๋ง์ง๋ง ์ ์ธ์ด ์น๋ฆฌํฉ๋๋ค.
@base-color: green;
div {
background: @base-color;
}
@base-color: red;
๊ธฐ๋ณธ ์์์ ๋ง์ง๋ง์ ๋ค์ ์ ์ธ๋๊ธฐ ๋๋ฌธ์ div์ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ์์์ ๋นจ๊ฐ์์ด ๋ฉ๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ์ปดํ์ผ๋ฉ๋๋ค.
div {
background: red;
}
์ด๊ฒ์ ์ด์ ์ ๋์๊ณ , ์ฌ์ค ๋๋ ๊ทธ๊ฒ์ด ๊ตฌํ๋์๋ค๊ณ ์๊ฐํ๋ฉฐ ๋ถํธ์คํธ๋ฉ์์ ๊ทธ๊ฒ์ ์ํ๋ ์ฌ๋๋ค๋ก๋ถํฐ ํ ์์ฒญ์ ๋ฐ์๊ณ ๋ช ๊ฐ์ง ํ ๋ก ํ์ ๋์ํ์ต๋๋ค.
์ฌ์ฉ์๊ฐ ๊ฐ์ ธ์ค๊ธฐ ์ ์ ๋ณ์๋ฅผ ์ ์ํ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ๋๋ค. ์ฌ์ฉ์๊ฐ ์ดํ์ ์ฌ์ ์๋ฅผ ์ ์ํ๋ฉด ๊ธฐ๋ณธ๊ฐ์ด ์๋ ๊ฒ์ฒ๋ผ ์๋ํฉ๋๋ค. ์ด๋ ๊ฐ์ ธ์จ ํ์ผ์์๋ ์ฌ์ฉ ํ์ ์ ์๋ ๊ฒฝ์ฐ์๋ CSS์ ๋์ผํ ๋ฐฉ์์ผ๋ก ๋ง์ง๋ง ์ ์๋ฅผ ์ทจํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์๊ฐ ๊ฐ์ ธ์ค๊ธฐ ํ์ ๋ณ์๋ฅผ ์ฌ์ ์(๋๋ ๊ฐ์ ธ์ค๊ธฐ ํ์ ๋ณ์ ํ์ผ ๊ฐ์ ธ์ค๊ธฐ)ํ๋ ๊ฒ๊ณผ ๋ ์ ์ ๊ฒ์ ๊ตฌ๋ฌธ์ ์ถ๊ฐํ๋ค๊ณ ๋งํ๋ ๊ฒ์ ๊ทธ๋ฆฌ ํฐ ๋ถ๋ด์ด ์๋๋๋ค. ์ด๊ฒ์ด less์ ์ฅ์ ์ค ํ๋๋ผ๊ณ ์๊ฐํฉ๋๋ค. sass์ ๊ฐ์ ์์ ์ํํ์ง๋ง ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋ ๊ฐ๋จํ ๊ตฌ๋ฌธ์ ์ฌ์ฉํฉ๋๋ค.
์ด๊ฒ์ JavaScript ํ๋ก๊ทธ๋๋จธ๊ฐ ์๊ฐํ ์ ์๋ ๊ฒ๊ณผ ๋ฐ๋์ง๋ง ๊ทธ ์ด๋ฉด์ ์๋ ์์ด๋์ด๋ CSS์ ๋ ๊ฐ๊น๋ค๋ ๊ฒ์ ๋๋ค.
์๋น์์๊ฒ ์ฃผ๋ฌธ์ ๊ณ ๋ คํ๋๋ก ์์ฒญํ๋ ๊ฒ์ด ๊ฐ๋ฅํ์ง ์๊ฑฐ๋ ๋ฐ๋์งํ์ง ์์ ์ด์ ์ ๋ํด ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น? ์ฐ๋ฆฌ๋ ๊ฐ๋ ฅํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋ ๊ธฐ๋ฅ์ ์๋ฝํ์ง๋ง ์ธ์ด์ ๋ณต์ก์ฑ ํฝ์ฐฝ์ ํผํ๊ธฐ ์ํด ์๊ฒฉํด์ผ ํฉ๋๋ค.
#1109 #1104 #313 ์ฐธ์กฐ
๊ทธ๋ฆฌ๊ณ ๋ช ํํ ํ์๋ฉด, ์ฐ๋ฆฌ๋ ๋จํธํ๊ฒ "์๋์ค"๋ผ๊ณ ๋งํ๋ ๊ฒ์ด ์๋๋๋ค. ์ด ๊ธฐ๋ฅ์ด ์ด๋ฏธ ์กด์ฌํ ์ ์์์ ๋ณด์ฌ์ฃผ๋ ค๊ณ ํฉ๋๋ค.
๋ ๋ฌธ์์ ๋ช ๊ฐ์ง ์ ๋ณด๋ฅผ ์ถ๊ฐํ์ต๋๋ค
์ด๋ฏธ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ์ข ๋ฃ("๊ฐ๋จํ ๋ฐฉ๋ฒ") ๊ธฐ๋ฅ(http://lesscss.org/features/#variables-feature-default-variables).
_syntax_๊ฐ ๊ฒน์น๋ ๋์ SASS๋ ์์์ ์๋๋ก "์คํ"ํ์ง๋ง LESS๋ ๊ทธ๋ ์ง ์๊ณ ๋์ CSS์ฒ๋ผ ์๋ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ํผ๋์ด ์์ฃผ ๋ฐ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. LESS๋ CSS+(์ถ๊ฐ ๊ธฐ๋ฅ์ด ์๋ CSS)์ ๊ฐ๊ณ SASS๋ "CSS ๊ตฌ๋ฌธ์ด ์๋ PHP"์ ๊ฐ์ต๋๋ค. (ํ์ํ ๊ฒฝ์ฐ) ๊ทธ ๊ตฌ๋ถ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋์ง ๊ถ๊ธํฉ๋๋ค.
์๋น์์๊ฒ ์ฃผ๋ฌธ์ ๊ณ ๋ คํ๋๋ก ์์ฒญํ๋ ๊ฒ์ด ๊ฐ๋ฅํ์ง ์๊ฑฐ๋ ๋ฐ๋์งํ์ง ์์ ์ด์ ์ ๋ํด ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น? ์ฐ๋ฆฌ๋ ๊ฐ๋ ฅํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์๋ ๊ธฐ๋ฅ์ ์๋ฝํ์ง๋ง ์ธ์ด์ ๋ณต์ก์ฑ ํฝ์ฐฝ์ ํผํ๊ธฐ ์ํด ์๊ฒฉํด์ผ ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ๋์๊ด ์ฌ์ฉ์(๋ฐ ์๋น์)์๊ฒ ๋์๊ด ์ฝ๋๋ฅผ ์ค์ค๋ก ํธ์งํ์ง ๋ง๋ผ๊ณ ๊ฐ๋ฅด์น๊ธฐ ๋๋ฌธ์
๋๋ค. !default
๊ธฐ๋ฅ์ด ์๋ค๋ ๊ฒ์ ์ด ๋ ๊ฐ์ง ์ค ํ๋๋ฅผ ์ํํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ๋ ๋ค ๋๊ฐ์ด ๋์ imo:
sass ์ ๊ทผ ๋ฐฉ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋จ์ผ ํ์ผ๋ง ์ ๊ณตํ๋ฉด ์ฌ์ฉ์๊ฐ ์ฌ์ฉ์ ์ ์ํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
my-color: red;
<strong i="15">@import</strong> "./my-library.less";
๋์ ์:
<strong i="19">@import</strong> "./my-library-variables.less";
my-color: red;
<strong i="20">@import</strong> "./my-library-rules.less";
์ด ๋ฌธ์ ๋ฅผ ์ฌ๊ณ ํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@arcanis ์ฌ์ค ์ ๊ทธ๋ ๊ฒ ์๊ฐํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ ๊ฐ์ง ์คํ์ผ์ํธ๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค. ํ๋๋ ๊ธฐ๋ณธ ๋ณ์์ฉ์ด๊ณ ๋ค๋ฅธ ํ๋๋ ์ค์ ๊ท์น์ฉ์ ๋๋ค.
sass ์ ๊ทผ ๋ฐฉ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋จ์ผ ํ์ผ๋ง ์ ๊ณตํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
Less์์๋ ์์ ํ ๋์ผํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋์์ธ์ ๋๋ค.
<strong i="11">@import</strong> "./my-library.less";
@my-color: red;
๋๋ ๋น์ ์ด ๋จ์ํ "Lazy-Loading"์ ๋์น๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค (๊ทธ๋ฆฌ๊ณ ์ ํํ ๋์ผํ ์๊ฐ ๋ฌธ์ ์์ no, thanks!
~ !default
๋ผ๊ณ ๋งํ๋ ๋ฐ ์ฌ์ฉ๋จ).
๋๋ ๋น์ ์ด ๋จ์ํ "Lazy-Loading"์ ๋์น๊ณ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@seven-phases-max WTF, ๋ง์ต๋๋ค. ์ ์ฅ, ์๋ง ๋ด ์ ์ฒด ๋ต์ฅ์ ์ญ์ ํด์ผ ํ ๊ฒ์ ๋๋ค(๋ฐฉ๊ธ ์ญ์ ํ์ต๋๋ค). ๋ถํธ์คํธ๋ฉ์ ๊ฐ์ ธ์ฌ ์ ์๊ณ ํน์ var๋ฅผ ์ฌ์ ์ํ ์ ์๋ค๊ณ ๋งํ๋ฉด์ ์ ๋๋ก ์๋ํฉ๋๊น?
๋๋ ๋น์ ์ ๋ฏฟ์ง ์์๊ณ ๊ทธ๊ฒ์ ํ์ธํ๊ธฐ ์ํด ๋ด ์์ ์ ํ ์คํธ๋ฅผ ์ํํ์ต๋๋ค. ๋ด๊ฐ ์ด๊ฑธ ์ด๋ป๊ฒ ๋์ณค์ด?? ์ฌ์ฉ์ ์ ์๋ฅผ ํฌํจํ์ฌ Bootstrap์์ ๋ณธ ๋ชจ๋ ๊ธฐ์ฌ์์ variables.less ํ์ผ์ ๋ณต์ฌํ๊ณ ๊ณ ์ ํ ๊ฐ์ ์ค์ ํ๋๋ก ๊ถ์ฅํ๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ฌผ๋ก ๋ ๋ง์ ๋ณ์๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ถ๊ฐ๋ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ํฌํธ ์ง์ ์ ์ ๋ ํฐ๊ฐ ์ถ๋ ฅ๋๊ณ ์๋ค๋ ์ธ์์ ๋ฐ์ ๊ฒ ๊ฐ์์. ๋ณ์๊ฐ ํญ์ ์ด๋ฐ ์์ผ๋ก "์ง์ฐ ๋ก๋"๋์์ต๋๊น?
์ด๊ฒ์ Less์์ ์ผ๋ฐ์ ์ผ๋ก ๋์น๋ ๊ฐ์ฅ ์ค์ํ ๋จ์ผ ๊ธฐ๋ฅ์ด์ด์ผ ํฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ธ๊ธํ๋ Less or Less ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์ ๋ณธ ์ ์ด ์์ต๋๋ค. ์ฌ๊ธฐ ์ค๋ ๋์ ์๋ ๋ชจ๋ ๊ฒ๊ณผ ๋ฌธ์๋ฅผ ์ฌ์ฉํ๋๋ผ๋ ์ค์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ด๊ฒ์ด ์๋ฏธํ๋ ๋ฐ๊ฐ ์ฆ์ ๋ช ํํ์ง ์์์ต๋๋ค. ๋๋ ๋ชจ๋ ์ฌ๋๋ค์ด ๋จ์ํ ๋์ค์ ์ค์ ํ์ฌ ์ด์ ์ ์ ์ธ๋ ๋ณ์๋ฅผ ๋ฌด์ํ ์ ์๋ค๊ณ ๋งํ๋ ์ค ์์๋๋ฐ ์ด์ ์ ๊ฐ์ ธ์จ ๋ฌธ์์ ๋ณ์ ํ๊ฐ์ ์ํฅ์ ์ค ์ค์ ๋ชฐ๋์ต๋๋ค.
๋ด๊ฐ ์ง๊ธ๊น์ง ์ด๊ฒ์ ์ป์ง ๋ชปํ๋ค๋ ๊ฒ์ด ๋ฏฟ๊ธฐ์ง ์์ต๋๋ค. ์ด๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด๊ฐ ์ ์ ๋ฌธ์๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ชจ๋ ๊ฒ์ ๋ณ๊ฒฝํ๋ฉฐ ์ถ๋ ฅ์ ๋ณด์ฌ์ฃผ์ง ์๋ ๋ฌธ์์ ์ฝ๊ฐ์ ์ธ๊ธ์ด ์์ต๋๋ค.
Less์์ !default
๊ธฐ๋ฅ์ ๋ํ ์์ฒญ์ด ๋ง์ ์ด์ ๋ ์ด ๊ธฐ๋ฅ์ ์ง๊ฐํ๊ฑฐ๋ ๋ฌธ์์ ๊ฐ๋จํ ์์ (์ ๋ฅผ ํฌํจํ์ฌ)์์ ์ดํดํ๋ ์ฌ๋์ด ๊ฑฐ์ ์๊ธฐ ๋๋ฌธ์ผ ์ ์์ต๋๋ค.
์ต์ํ @seven-phases-max์์ ๋ค์ ์ค๋ช ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
์ด๋ฐ. ๊ธ์, ๋น์ ๋ง์ด ๋ง์. ๋๋ ๋ฌธ์๋ฅผ ์๋ชป ์ดํดํ์ด, ๋ด ๋์!
@Soviut ๋น์ ์ ๋น์ด๋จน์ ์ฒ์ฌ์ ๋๋ค! ๋ณ์ ์ ์ธ์ด SASS/LESS์์ ๊ทธ๋ ๊ฒ ์๋ํ๋์ง ์ ํ ๋ชฐ๋์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
๋๋ ์ด๊ฒ์ด ๋ด๊ฐ Less์์ ์ด ๋ค๋ฅธ ๋ชจ๋ ๊ฒ๋ค์์ ๋ช ๋ฐฑํ ํ๋์ด ์๋์๋ค๋ ์ฌ์ค์ ์ฌ์ ํ ์ด๋ง๋ฅผ ์น๊ณ ์์ต๋๋ค. ๋ด ๋ฌธ์ ๋ ๋ด๊ฐ ๊ทธ๊ฒ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์ดํดํ์ง ๋ชปํ๋ ์ฌ๋๋ค์ด ์์ฑํ ๋น์ฝํ ์์ ๊ธฐ์ฌ๋ฅผ ๋ณธ ๊ฒ์ ๋๋ค.
๋ํ ์ฐธ๊ณ : @spikesagal ๊ทํ์ ์ง์ : "๋ณ์ ์ ์ธ์ด SASS/LESS์์ ๊ทธ๋ฐ ์์ผ๋ก ์๋ํ๋์ง ์ ํ ๋ชฐ๋์ต๋๋ค." -- ๋ด๊ฐ ์๋ ํ, ๋ณ์์ ๋์์ ๋ ์ธ์ด ๊ฐ์ ๋์ผํ์ง ์์ต๋๋ค. SASS์ LESS๋ ๋งค์ฐ ๋ค๋ฅด๊ฒ ํ๊ฐํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ Sass๋ก ์ด๋ํ๊ธฐ ๋๋ฌธ์ BS4์์ ์ด ๊ธฐ๋ฅ์ ์ฃฝ์ด๊ณ ์์ต๋๋ค... :-1: ๊ทธ ์ด๋์ ๋ํด ์ฌ์ ํ ๊ฝค ์ฌํ๋๋ค.
๋ ๋ง์ !default ๋ณ์๋ฅผ ์ํ ์ธ์์ด ์์๋ฉ๋๋ค. [twbs/bootstrap#17418]
๊ธ์, ๊ทธ๋ค์ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ SCSS ์์ค๋ฅผ ๋ณ๊ฒฝํ์ฌ Less ๊ธฐ๋ฅ์ ์ฃฝ์ผ ์ ์์ต๋๋ค. (๊ธฐ์ ์ ์ผ๋ก๋ "๊ธฐ๋ฅ"(์ผ์ข ์ "ํฉ์ฑ๋ ๋์"๊ณผ ๊ฐ์)์ด ์๋๋ผ ๊ธฐ๋ณธ ์์ฑ/๊ฒ์ผ๋ฅธ ํ๊ฐ์ ๊ฒฐ๊ณผ์ ๋๋ค). BS์ Less ๋ฒ์ ์ด ์๊ณ (๊ธฐ์ฌํ ์์ฌ๊ฐ ์๋ ์ฌ๋๋ค์ ์์ ๋ฌธ์ ์ผ ๋ฟ์ ๋๋ค), ์ต์ํ ํ๋์ ์ ์ญ ๋ณ์๊ฐ ์๋ ํ - ํญ์ ํด๋น ๋ณ์๋ฅผ ์ฌ์ ์ํ ์ ์์ต๋๋ค.
์. bootstrap์ ๊ณต์ v4-alpha๊ฐ Sass๋ก ์ฎ๊ฒจ์ก์ต๋๋ค. ์ ์ด๋ ๋ด๊ฐ ์ดํดํ๊ธฐ๋ก๋ ๊ณต์ ๋ฌธ์์์๋ ๋ ์ฃฝ๊ณ ์์ต๋๋ค. Sass์๋ ์ง์ฐ ๋ก๋ ๋ณ์์ ๊ฐ์ ๊ฒ์ด ์๊ธฐ ๋๋ฌธ์ ์ด ๊ธฐ๋ฅ์ ๋ํ ์ง์๋ ์ค๋จ๋ฉ๋๋ค. ๊ทธ๋ค์ !default๋ง ์ง์ํฉ๋๋ค. ์ด๊ฒ์ ์ด๋ค ์๋ฏธ์์๋ "์ค, ์ฐ๋ฆฌ๋ ๋น์ ์ด ์ธ๋ถ์์ ์ฐ๋ฆฌ์ ๋ณ์๋ฅผ ํ ๋ฒ๋ง ์ฌ์ ์ํ ์ ์๋๋ก ํ์ฉํ๊ณ , ์ฐ๋ฆฌ๊ฐ ํ์ฉํ๋ ๊ฒฝ์ฐ์๋ง ํ์ฉํฉ๋๋ค. ๋ฐ๋ผ์, ์ฐ๋ฆฌ๊ฐ ๋น์ ์๊ฒ ๋จ์ํ !default๋ฅผ ์๋ตํจ์ผ๋ก์จ ๋ณ์๋ฅผ ์์ฑํ๋ฉด, ๋น์ ์ ๊ฑฐ์ ์๋ง์ด ๋์ด ํ์ผ์ ์๋ ์ ์ฒด darn ์ ํ๊ธฐ๋ฅผ ์ฌ์ ์ํด์ผ ํฉ๋๋ค. ์ฒ๋ฆฌํ์ญ์์ค."
Sass์๋ ์ง์ฐ ๋ก๋ ๋ณ์์ ๊ฐ์ ๊ฒ์ด ์๊ธฐ ๋๋ฌธ์ ์ด ๊ธฐ๋ฅ์ ๋ํ ์ง์๋ ์ค๋จ๋ฉ๋๋ค.
๊ธ์, ์ด๊ฒ์ ๋จ์ง "๋ถํธ์คํธ๋ฉ์์ ์ฃฝ์ธ๋ค"๋ ์๋ฏธ์ผ ๋ฟ์ ๋๋ค(์ด๋ ๋ถ๋ช ํ ์ด ์ค๋ ๋ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๊ฒ์ ๋๋ค. BS์ Less ๋ฒ์ ์ด ์๋ ํ _this_ ์ ์ฅ์์ ์๋ ๋ถํธ์คํธ๋ฉ ๊ธฐ๋ฅ์ ๋ํด ์ ๊ฒฝ์ฐ์ง ์์์ผ ํฉ๋๊น?).
์ด ํ ๋ก ์ ๋ถํธ์คํธ๋ฉ์์ ๋ณ์๋ฅผ ์ฌ์ ์ํ๋ ๊ฒ์ ๊ดํ ๊ฒ์ด์๊ธฐ ๋๋ฌธ์...
์ฐ๋ฆฌ๋ ๋ ์ ์ ๊ฒ์ ๊ณ ์ํ๊ณ ์์ต๋๋ค :smile:
์๋ ์ธ๊ธ๋ ๋๋ ๋ง์ ๋ํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๋จ์ํ๋ ์๋ฅผ ๊ณ ๋ คํ์ญ์์ค.
<strong i="8">@font_size__h1</strong> = 30px;
@font_size__h1
์ ์ธ์ ์ฌ์ฉํ๋ ๋ณ๋์ LESS ํ์ผ์ด ํฌํจ๋ ํ๋ฌ๊ทธ์ธ์ด ์์ต๋๋ค. ๊ทธ๋์ ์ ๋ <strong i="12">@import</strong> (reference) "path/to/file.less";
ํฉ๋๋ค. ๋ฌธ์ ์์ต๋๋ค. ์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.@font_size__h1
๊ฐ ์ด๋์๋ ์ ์๋์ง ์์ ์ ์ฌ์ดํธ๋ก "ํ๋ฌ๊ทธ์ธ"์ ๊ฐ์ ธ์ต๋๋ค. ์ด ์์ ์์ " @font_size__h1
๊ฐ ์ ์๋์ด ์์ผ๋ฉด ํด๋น ๊ฐ์ ์ฌ์ฉํ๊ณ ์ ์๋์ง ์์ ๊ฒฝ์ฐ ์ฌ๊ธฐ์ ์ ์ํ ๊ฐ์ ์ฌ์ฉํ์ญ์์ค."๋ผ๊ณ ๋งํ๋ ๊ฒ์ด ์ข์ต๋๋ค.๋ด๊ฐ ๋ณผ ์์๋ ํ ํญ๋ชฉ 3์ ํ์ฌ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
@theMikeD
๋ด๊ฐ ๋ณผ ์์๋ ํ ํญ๋ชฉ 3์ ํ์ฌ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
์ค๋ ๋๋ฅผ ์ฝ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
<strong i="10">@import</strong> "path/to/file.less";
<strong i="11">@import</strong> "here.less"; // if it's not defined <elsewhere>, then use the value I define <here>
<strong i="12">@import</strong> "elsewhere.less";
๋ฌผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ค์ผ ์ ์์ต๋๋ค.
<strong i="16">@import</strong> "path/to/file.less"; // <- define default value there
@font-size-h1: foo; // if it's not defined here then use the value defined above
์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก http://lesscss.org/features/#variables -feature-default-variables์ ๋์ผํ ์์ ๋๋ค.
์, ์ค๋ ๋๋ฅผ ์ฝ์์ต๋๋ค. ๊ทํ์ ์์ ๋ด ์ง๋ฌธ์ด ๊ฑฐ๊พธ๋ก ์๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ๋ฌป๋ ๊ฒ์ ์ดํดํ์ง ๋ชปํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋ฌผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ค์ผ ์ ์์ต๋๋ค.
@import "๊ฒฝ๋ก/to/file.less"; // <- ๊ฑฐ๊ธฐ์ ๊ธฐ๋ณธ๊ฐ์ ์ ์ํฉ๋๋ค.
@ font-size-h1: foo; // ์ฌ๊ธฐ์ ์ ์๋์ง ์์ ๊ฒฝ์ฐ ์์ ์ ์๋ ๊ฐ์ ์ฌ์ฉํฉ๋๋ค.
์ด๊ฒ์ ๋ด๊ฐ ํ์ํ ๊ฒ๊ณผ ๋ฐ๋์
๋๋ค. ์ด๊ฒ์ path/to/file.less
์ @font-size-h1
๊ฐ์ ๋ฌด์์ด๋ ์๊ด์์ด ๋ก์ปฌ ๊ฐ์ผ๋ก ๋ฎ์ด์๋๋ค. ๋ด๊ฐ ํ์ํ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ๋๋ ๋ก์ปฌ ํ์ผ์ ๊ฐ์
๋๋ค.
a) path/to/file.less
๊ฐ ๋ก๋๋์ง ์์๊ฑฐ๋
b) '@ font_size__h1 is not set in
path/to/file.less`์ ๊ฐ
IOW @font-size-h1: foo;
์ ๋ก์ปฌ ๊ฐ์ ํญ์ ๋ก์ปฌ ํ์ผ์ ์์ง๋ง path/to/file.less
์ ์ค์ ๋ ๊ฒฝ์ฐ ์ฌ์ ์ํด์ผ ํฉ๋๋ค.
์ด์จ๋ ์ด์ ๋ฐค์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๋ค. ๋จผ์ ๋ก์ปฌ ๊ฐ์ ํ ๋นํ ๋ค์ @import
๋ฌธ์ ํ์ผ์ ์์ ๋ถ๋ถ์ด ์๋ ๋ ๋ถ๋ถ์ ๋๋ ๊ฒ์
๋๋ค. ๋ฐ๊ฒฌ๋๋ฉด ๋ก์ปฌ ๊ฐ์ ๋ฎ์ด์๋๋ค.
์ด์จ๋ ๊ฐ์ฌํฉ๋๋ค.
๋น์ ์ ๋ด๊ฐ ๋ฌป๋ ๊ฒ์ ์ดํดํ์ง ๋ชปํ๋ ๊ฒ ๊ฐ์ต๋๋ค
๋ณด๊ธฐ๋ฅผ ์๋ก ๊ณ ์น๋ ค๋ฉด ๋ ๋ณ์ ๊ธฐ๋ณธ ์ฌํญ๋ถํฐ ์์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
(์๋ํ๋ฉด ๋น์ ์ ๋ช
๋ นํ C/PHP์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ชจ๋ ๊ฒ์ ์๊ฐํ๋ ค๊ณ ํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง Less/CSS์์๋ ์์ ํ "์ ์ธ์ ๊ฑฐ๊พธ๋ก"์
๋๋ค.)
์ง๋ ๋ช ๋
๋์ ์ฃฝ์ ๋๊น์ง ์ด์ผ๊ธฐ๋์ด ์์ผ๋ฉฐ !default
๋ ๊ธฐ๋ณธ Less ๋ณ์ ์ฌ์ ์์ ๋น๊ตํ ๋ _์๋ฌด๊ฒ๋_ ์๋ก์ด ๊ฒ์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ๊ธฐ๊ฐ. (์ฐ๋ฆฌ๋ ์ด์ ์ ์ฌ๋ฌ ๋ฒ ๊ฐ๋ณธ ์ ์ด ์์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ Less์์ !default
์ ๋ํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ฐพ์๋ค๊ณ ์๊ฐํ๋ค๋ฉด ๊ทธ๊ฒ์ Less ๊ฐ๋ณ ์๋ฏธ๋ก ์ ๋ํ ๊ทธ์ ์คํด ์ธ์๋ ์๋ฌด ์๋ฏธ๊ฐ ์์ต๋๋ค.)
๋ด๊ฐ ํ์ํ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ๋๋ ๋ก์ปฌ ํ์ผ์ ๊ฐ์ ๋๋ค.
a)path/to/file.less
๊ฐ ๋ก๋๋์ง ์์๊ฑฐ๋
b)@ font_size__h1
path/to/file.less
์ ์ค์ ๋์ด ์์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ฉด ๋จ์ํ ๋ฐ๋์ ๋๋ค.
@font-size-h1: foo;
<strong i="27">@import</strong> "path/to/file.less";
ํ๋ค!
...๋ด๊ฐ ๋งํ๋ฏ์ด ๋ด๊ฐ ์ฐฉ๋ฅ ํ ๊ณณ์ ๋๋ค.
๋ด๊ฐ ์ด ๊ธฐ์ฌ๋ฅผ ์ ์ํ๋ ค๊ณ ํ๋๋ฐ @seven-phase-max๊ฐ ๋งํฌ๋ ๊ธฐ์ฌ๋ฅผ ๋ณด์์ต๋๋ค. ๐ ์ฐ๋ฆฌ๋ฅผ ๋ฏฟ์ผ์ธ์. ๋น์ ์ด ์๊ตฌํ๋ ๊ฒ์ ์ด๋ฏธ ์กด์ฌํฉ๋๋ค! ๊ทธ๋ฌ๋ ์ด๋ป๊ฒ/์ ์กด์ฌํ๋์ง ์ดํดํ๋ ค๋ฉด Less์ ๋ณ์ ํ๊ฐ๋ฅผ ์ดํดํด์ผ ํฉ๋๋ค.
๋ฐ์ดํฐ ๊ทธ๋ฆฌ๋์ธ ๊ตฌ์ฑ ์์๊ฐ ์์ต๋๋ค. ์ด ๊ตฌ์ฑ ์์์๋ ๊ตฌ์ฑ ์์ ํจํค์ง์ ์ํด ์ ์๋ ๊ธฐ๋ณธ ์คํ์ผ์ด ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ธ๋ถ์์ ํน์ ๋ณ์๊ฐ ์ด๋ฏธ ์ ์๋์ด ์๋ ๊ฒฝ์ฐ ์ฐ์ ์์๊ฐ ์์ด์ผ ํฉ๋๋ค.
์ฑ๋ฆฌ์ค
/grid/grid.less
๊ทธ๋ฆฌ๋๋ ๊ตฌ์ฑ ์์์ด๋ฏ๋ก ์ฌ๊ธฐ์ ์ถ๊ฐํ๊ฑฐ๋ grid.less ํ์ผ ๋ค์ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์์ด๋ฒ๋ฆฌ์ญ์์ค.
์ด ๋ฌธ์ ๋ฅผ ์ผ๋ง๋ ์ ๊ฒ ๋ค๋ฃจ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. Scss๊ฐ ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋ฐ๋ ๊ทธ๋ด๋งํ ์ด์ ๊ฐ ์์ต๋๋ค.
@geri777
๊ทธ๋ฌ๋ ์ธ๋ถ์์ ํน์ ๋ณ์๊ฐ ์ด๋ฏธ ์ ์๋์ด ์๋ ๊ฒฝ์ฐ ์ฐ์ ์์๊ฐ ์์ด์ผ ํฉ๋๋ค.
Less๋ CSS์ฒ๋ผ ํ๊ฐ๋ฉ๋๋ค.
.css {
--color: blue;
color: var(--color); // --color will be red
--color: red;
border-color: var(--color); // --color will still be red, red is the scope's final value
}
.less {
<strong i="10">@color</strong>: blue;
color: @color; // <strong i="11">@color</strong> will be red
<strong i="12">@color</strong>: red;
border-color: @color; // <strong i="13">@color</strong> will still be red, red is the scope's final value
}
````
Scss, instead, doesn't mimic CSS evaluation and instead evaluates more like, say, PHP.
```scss
.scss {
$color: blue;
color: $color; // $color will be blue
$color: red;
border-color: $color; // $color will be red
}
๋ฐ๋ผ์ Sass/SCSS์์ ๋ฃจํธ ๋ณ์์ ๊ฐ์ ์ฌ์ ์ํ๋ ค๋ฉด ๋ ๊ฐ์ง ์์ ์ ์ํํด์ผ ํฉ๋๋ค.
!default
ํ๊ทธ๋ฅผ ์ง์ ํด์ผ ํฉ๋๋ค.์์์ ๊ฐ์ด:
// main.scss
<strong i="22">@import</strong> "overrides.scss";
<strong i="23">@import</strong> "library.scss";
// overrides.scss
$color: red;
// library.scss
$color: blue !default;
.scss {
color: $color;
}
Less์์๋ ํ ๋ง ์ง์ ์ด ํจ์ฌ ์ฝ์ต๋๋ค. (์ผ๋ฐ์ ์ผ๋ก) ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํด ์๋ฌด ๊ฒ๋ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ผ๋ฉฐ ์ฌ์ ์๋ฅผ ๋ค์ ๋๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ํ ๊ฐ์ง๋ง ํ๋ฉด ๋ฉ๋๋ค.
// main.less
<strong i="27">@import</strong> "library.less";
<strong i="28">@import</strong> "overrides.less";
// overrides.less
<strong i="29">@color</strong>: red;
// library.less
<strong i="30">@color</strong>: blue;
.less {
color: @color;
}
๋ฐ๋ผ์ Less๋ ํญ์ ์ต์ข
๊ฐ์ ์๋ฝํ๋ฏ๋ก !default
๊ฐ ํ์ํ์ง ์์ต๋๋ค.
CSS์ ์บ์ค์ผ์ด๋์ ๊ฐ์ Less ํ๊ฐ๋ฅผ ์๊ฐํ์ญ์์ค. ๊ทธ๋ฅ ์๋ํฉ๋๋ค. ์ต์ข ์ ์ธ์ด ์ด๊น๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ด๊ฐ ์ด ๊ธฐ์ฌ๋ฅผ ์ ์ํ๋ ค๊ณ ํ๋๋ฐ @seven-phase-max๊ฐ ๋งํฌ๋ ๊ธฐ์ฌ๋ฅผ ๋ณด์์ต๋๋ค. ๐ ์ฐ๋ฆฌ๋ฅผ ๋ฏฟ์ผ์ธ์. ๋น์ ์ด ์๊ตฌํ๋ ๊ฒ์ ์ด๋ฏธ ์กด์ฌํฉ๋๋ค! ๊ทธ๋ฌ๋ ์ด๋ป๊ฒ/์ ์กด์ฌํ๋์ง ์ดํดํ๋ ค๋ฉด Less์ ๋ณ์ ํ๊ฐ๋ฅผ ์ดํดํด์ผ ํฉ๋๋ค.