.guard () when (@variable) {
a {
color: red;
}
}
å€æ°ãå®çŸ©ãããŠããªããããåºåã¯ãããŸããã
<strong i="8">@variable</strong>: true;
.guard () when (@variable) {
a {
color: red;
}
}
å€æ°ãå®çŸ©ãããŠããããã次ã®ããã«åºåãããŸãã
a {
color: red;
}
+1
ããã¯ãã©ã€ãã©ãªã®åºæ¬è²ãèšå®ããããã«ã䜿çšã§ããŸãã
次ã®å Žåãæ³åããŠã¿ãŠãã ããã
ãŠã§ããµã€ãã®ã¡ã€ã³ã¡ãã¥ãŒãªã©ãç¹å®ã®ã¢ããªã®ãã¡ã€ã«ãå°ãªããªã£ãŠããŸãã
ãã®lessãã¡ã€ã«ãã¡ã€ã³ã®lessãã¡ã€ã«ã«ã€ã³ããŒãããŸããã¡ã€ã³ã®lessãã¡ã€ã«ã§ã¯ãããŒã¹ã«ã©ãŒãå€æ°ãšããŠå®çŸ©ãããŠããŸãã
ããã§ãã¡ã€ã³ã¡ãã¥ãŒã®lessãã¡ã€ã«ã§ãããã®åºæ¬è²ã䜿çšããå Žåããããã¯ã¡ã€ã³ãã¡ã€ã«ã«äŸåããŸãã
å€æ°ã®ååšã確èªã§ããã°ãã¢ãžã¥ãŒã«å®çŸ©ã®è²ã«ãã©ãŒã«ããã¯ã§ããŸãã
ã¡ãã¥ãŒã¬ã¹ãã¡ã€ã«ãæ³åããæ¹æ³ã®äŸã次ã«ç€ºããŸãã
@menu-base-color: white;
@menu-base-color: @base-color when (@base-color);
...or...
@menu-base-color: @base-color when isset(@base-color);
+1ããã§ã«istext
ãããã isnumber
ã«ã¯isdefined
ãããã isundefined
ã¯å°ãªãããŒãã§å€§ãã«åœ¹ç«ã¡ãŸãã
ã€ãŸãã$ value
ã䜿çšãããã isdefined
$ã®å Žåã¯$ userValue
$ã䜿çšããŸã
LESSã䜿çšããŠã»ãã³ãã£ãã¯UIã®ããŒãèŠåãèšå®ããããšãããšããã®åé¡ãé »ç¹ã«çºçããŸãã
ããã«+ 1-æ¬åœã«çŽ æŽãããã§ãããã
ç§ãããã«+1
is-defined
é¢æ°ãè¿œå ããã®ã¯å€§ããããšã§ã¯ãããŸããïŒv2ããªãªãŒã¹ããããšããã«æåã®ãã©ã°ã€ã³ã®1ã€ã«è¡šç€ºããããšæããŸãïŒã æ£çŽãªãšãããæ²ããããšã«ããã®æ©èœãå¿
èŠãªäººã¯ãäžèšã®äž¡æ¹ã®ãŠãŒã¹ã±ãŒã¹ãïŒå€ãã®å Žåãããã³ã³ãã¯ããªã³ãŒãã§ãïŒãã®ãããªæ©èœããªããŠã解決ã§ãããšããäºå®ãèŠéããŠããŸãã
@InitArtã®ãŠãŒã¹ã±ãŒã¹ïŒ
// library.less
<strong i="9">@variable</strong>: false;
a when (@variable) {
color: red;
}
// ......................................
// user.less
<strong i="10">@import</strong> "library.less"
<strong i="11">@variable</strong>: true;
@ nemesis13ã®ãŠãŒã¹ã±ãŒã¹ïŒ
// library.less
@base-color: green;
@menu-base-color: @base-color;
.menu {
background-color: @menu-base-color;
}
// ......................................
// user.less
<strong i="16">@import</strong> "library.less"
@base-color: white;
// or:
@menu-base-color: black;
// or whatever...
ã€ãŸããèŠçŽãããšãå€æ°ãå®çŸ©ãããŠãããã©ããããã¹ããã代ããã«ãå€æ°å€ã¯èªç±ã«ãªãŒããŒã©ã€ãã§ããããããã®å€æ°ã®ããã©ã«ãå€ãæäŸããã ãã§ãã
ããã¯ã¹ã®äŸã圌ãã®ããã«å®è¡ã§ããªãçç±ã誰ããçããããšãã§ããŸããïŒ ç§ããã§ããªã
å€æ°ãäžã§å®çŸ©ãããŠãããã©ããããããªãããã ãšæããŸãã
ã€ã³ããŒãã®äžïŒ ãããšãäœãä»ã®ãã®ã§ããïŒ
ãŠãŒã¹ã±ãŒã¹ããªããã®ã«ã€ããŠã¯æ€èšããŸããã
ãããè¡ãããšã®æ¬ ç¹ã¯ãå€æ°ãã¿ã€ããã¹ãã人ã«ã¯è¡šç€ºãããªãããšã§ãã
ãšã©ãŒã èŠåãåºããŠãããåé¿ããããšãã§ããŸããã
èŠåãæãŸãªãç®ç..ããã«é¢ããç§ã®å¯äžã®åé¡ã§ã
ææ¡ã
ããã¯ãçµæã®CSSã®ãµã€ãºãå°ããããããã«ããŒããå®çŸ©ãããšãã«ç¹ã«åœ¹ç«ã¡ãŸãã äžè¬çã«ããŒããäœæãããšãã¯ãå€ãã®ããããã£ãèšå®ã§ããããã«ããããšæããŸãã ãã ãããŠãŒã¶ãŒã¯ãæ®ãã®ããããã£ãæªèšå®ã®ãŸãŸã«ããŠããããã®äžéšã®ã¿ãèšå®ãããå ŽåããããŸãã ãã¡ãããããããããã©ã«ãå€ã«èšå®ããããšã¯äžè¬çã«ã¯æ©èœããŸãããããã¯æçµçãªCSSãè¥å€§åããŸãã
次ã®åºæ¬ããŒãïŒãã³ãã¬ãŒãïŒãæ€èšããŠãã ããã
.my-class {
color: @text-color;
background-color: @background-color;
border-color: @border-color;
}
ããŒãã®ãŠãŒã¶ãŒã¯ãæ®ãã®ããããã£ãèšå®ããã«ãããã¹ãã®è²ã ããèšå®ãããå ŽåããããŸãã ãã¡ãããå€ããåæãããéæãããç¶æ¿ããªã©ã«èšå®ããããšã¯å¯èœã§ãããããã«ããæçµçãªCSSã®ãµã€ãºã倧ãããªããŸãã ããŒãã«ã¯ãã®ãããªããããã£ãäœçŸãããåŸåãããããããã®ãµã€ãºã¯å€§å¹ ã«å€§ãããªãå¯èœæ§ããããŸãã
@JechoJekov
ãã®æ©èœãªã¯ãšã¹ãã®èŠç¹ãèŠéããŠãããšæããŸãããŠãŒã¹ã±ãŒã¹ã§ã¯ããããã®ããããã£ãã¹ãŠã«æ³šæãæãå¿ èŠãããããšã«æ³šæããŠãã ããïŒãããã£ãŠãäžèšã®2ã€ã®æçš¿ãåŒãç¶ãé©çšãããçç±ïŒã ãããã£ãŠãããªãã®ãŠãŒã¹ã±ãŒã¹ãïŒ1400ã«æ°ãããã®ãè¿œå ããããšã¯ãªããšæããŸãïŒåºæ¬çã«ãããã¹ãŠã®å€ãæªå®çŸ©ã®å€æ°ã§èšå®ãããŠããå Žåã¯ããããã£ãã¹ãããããããªã©ã®å¥ã®æ©èœãææ¡ããŠããããã«èŠããŸãããããã¯å¥ã®ãã®ã§ãããã°ã¹ããŒãªãŒïŒã
@ seven-phases-max
ãããããå€æ°ããæªå®çŸ©ããŸãã¯ãæªèšå®ãã®å€ã«èšå®ã§ãããšããã§ãããã ããããã£ããã®ãããªå€ã«èšå®ãããšããã®ããããã£ã¯æçµçãªCSSã§ã¬ã³ããªã³ã°ãããŸããã ããã«ãããæ§æãç°¡ç¥åãããå€æ°ã宣èšãããŠããããšãæ€èšŒã§ããŸãã
@JechoJekov
ãããããå€æ°ããæªå®çŸ©ããŸãã¯ãæªèšå®ãã®å€ã«èšå®ã§ãããšããã§ãããã
ç§ãè¿°ã¹ãããã«ãããã¯ç¬èªã®ãã±ãããå¿ èŠãšããå¥ã®æ©èœã§ãïŒç¬èªã®è°è«ããããŸãïŒã
ããŒããããã®ã»ãã®äžéšã®èª¬æïŒããã¯ãReadyForImplementationããšããŒã¯ãããŠããŸããããã®ã¹ã¬ããã«ã¯ã³ã³ã»ã³ãµã¹ããªãããã§ã@ seven-phases-maxãé©åãªä»£æ¿æ¡ãææ¡ããããã§ãã @lukeapage @ Seven-phases-maxãå®è£ ã®æºåãåé€ããå¿ èŠããããŸããïŒ
@ matthew-deanããããŸããã ããã§ãReadyForImplementationãã¯ãŸã æå¹ã§ãããšæããŸããã€ãŸããããã®æ©èœã¯å®éã«ã¯å¿ èŠã§ã¯ãªãããã§ããã誰ãããã®ãããªãã®ãå®è£ ããPRãæãã€ããå Žåãæµæã¯ãããŸããããŸãã¯äžçš®ã®:)
ã©ã®ããã ïŒ ïŒæ€èšäžã®ïŒ
ç§ã«ãšã£ãŠããå®è£ ã®æºåãã§ããŠããããšã¯ã察åŠãŸãã¯å®è£ ããå¿ èŠããããšããäžè¬çãªïŒãã ãå¿ ãããå šäŒäžèŽã§ã¯ãªãïŒã³ã³ã»ã³ãµã¹ãããããšãæå³ããŸãã ãæ€èšäžãã¯ããªãã®å®çŸ©ã«åã£ãŠãããšæããŸãã
ã¹ã³ãŒãã䜿çšããŠãããšãã«ãŸã ãã®åé¡ãçºçããŠããŸã
<strong i="6">@foo</strong>: 'bar';
& {
// not sure if <strong i="7">@foo</strong> is defined
}
isDefined
ã䜿çšããèœåã欲ãã
is-defined
ã®ãããªãã®ã¯ïŒæ§æç³è¡£ãšããŠïŒçã«ããªã£ãŠããŸãããå®éã«ã¯å¿
èŠãããŸããã _åžžã«_å®çŸ©@foo
ïŒå¿
èŠãªããã©ã«ãå€ã䜿çšïŒãçµå±ã®ãšãããã¹ã¿ã€ã«å
ã§å€æ°ã䜿çšããŠããå Žåã¯ããããå®çŸ©ããå¿
èŠããããš_äºæž¬_ã§ããŸããäŸïŒ
// in a far far away galaxy of your library default variables:
<strong i="8">@foo</strong>: undefined;
// the code where you need it
& when not(<strong i="9">@foo</strong> = undefined) {
// <strong i="10">@foo</strong> is defined by user
}
// some user code
<strong i="11">@foo</strong>: bar;
ç§ã¯ãã§ã«äžèšã®äŸã§ãããæžãããšæããŸããïŒç§ã¯ãã®æ©èœã®æ¬ åŠãäœã®ã·ã§ãŒã¹ããããŒã«ããªãåŸãªããšããäºå®ã確å®ã«è¡šæããããšããŠããŸãã 1ã€ãå ±æããŠãã ããïŒã
ãã©ãŠã¶ã§ããŒãã®ãã¬ãã¥ãŒãèšå®ããããšããŠããŸãã
ããã¯ã less.js
ã䜿çšããããã©ã«ãã®@theme
å€æ°ãå®è¡æèšå®ã§äžæžãããå¿
èŠãããããšãæå³ããŸãã
ã¢ã©
window.less.modifyVars({
theme: 'someOtherValue'
})
ç§ã®LESSã§ã¯ã以äžãå«ãã°ããŒãã«theme.less
ãã¡ã€ã«ãã€ã³ããŒãããŠããŸã
<strong i="14">@theme</strong>: undefined;
.setTheme {
<strong i="15">@theme</strong> : 'default';
}
.setTheme;
ç§ãè©ŠããŸãã
<strong i="19">@theme</strong>: 'default';
åè
ã®å Žåãåºåãããå€ã¯undefined
ã§ãããåŸè
ã®å Žåã modifyVars
ã«äœãèšå®ãããŠãããã«é¢ä¿ãªããåžžã«default
$ã«ãªããŸãã
äŸã«ã€ããŠã¯ããããã¯ãªãã¯ããŠããŒãã®ããããããŠã³ãã¯ãªãã¯ããŠãã ããã
çŸåšã®åé¿çïŒã©ã€ããµã€ãã«ãããŸãïŒã¯ãå€æ°ã®ã€ã³ããŒããã¹ãæåã§ååŸããæ£èŠè¡šçŸã䜿çšããŠè§£æããŠããã modifyVars
ã䜿çšããŠãã¹ãŠã®å€æ°ãã€ã³ããŒãããããšã§ããããã¯ãããªãåä»ã ãšæšæž¬ã§ããŸãã
@ Seven-phases-max @import
ãåé¡ãåŒãèµ·ããéåžžã«ç¹æ®ãªãã¹ãã±ãŒã¹ã«çµã蟌ã¿ãŸããã
ã©ã¡ãã®å Žåãã次ã®ããšãåæãšããŠããŸãã
Javascript
window.less.modifyVars({
theme: 'changedValue'
});
theme.lessã®æåã®ã±ãŒã¹ã§ã¯ã outer
ãchangedValue
ã«æ£ããèšå®ãããŠããŸã
component.less
<strong i="17">@import</strong> 'theme.less';
theme.less
<strong i="22">@theme</strong>: 'default';
.outer {
value: @theme; // value is set to changedValue
}
ãã®å€±æããå Žåãtheme.lessã§ã¯@theme
ã¯changedValue
default
ã«èšå®ãããŸã
component.less
<strong i="32">@import</strong> 'theme.less';
theme.less
<strong i="37">@theme</strong>: 'default';
<strong i="38">@import</strong> "@{theme}"; // theme is set to default not changedValue
ãvarinmixinãã®å Žåãã¹ããããã¯æ¬¡ã®ããã«ãªããŸãã
// defaults:
.setTheme {
<strong i="6">@theme</strong>: undefined;
}
// custom:
.setTheme {
<strong i="7">@theme</strong>: 'default';
}
.setTheme;
ãã ãã modifyVars
ã®å Žåã¯ãè©Šããã¹ããããã«å¯ŸããŠåžžã«'someOtherValue'
$ã«ãªãã¯ãã§ãïŒ modifyVars
ã¯ãã³ã³ãã€ã«ãããæåŸã«ãã¬ãŒã³ãª<strong i="14">@theme</strong>: 'someOtherValue';
è¡ãè¿œå ããã ãã§æ©èœããããã§ãïŒãœãŒã¹ã³ãŒãïŒã ãããã£ãŠã modifyVars
ãæ©èœããªãå Žåãåé¡ã¯ä»ã®å Žæã§çºçããŠããå¯èœæ§ããããŸãã
button
ã®ããŒãžã³ãŒããèŠãŸããããè€éãããŠäœãééã£ãŠããã®ããããã«èšãããšã¯ã§ããŸããã äžèŠãããšãLessã³ãŒããã©ã®ããã«åã³ã³ãã€ã«ãããçµæã®CSSãmodifyVars
ã®åŸã«åé©çšãããããããããŸããïŒãŸãã¯ç解ã§ããªããããããŸããïŒïŒåçŽãªã¹ããããã§ã¯ã$ã«ç¶ãmodifyVars
less.refreshStyles
ãä»ããŠè¡ãããŸãïŒ modifyVars
ïŒã
ãšããã§ã念ã®ããã is-default
ã次ã®ãããªãã®ãšããŠäœ¿çšããäºå®ã¯ãããŸãããã
.setTheme when not(is-defined(@theme)) {
<strong i="26">@theme</strong>: 'default';
}
.setTheme;
ïŒ ãããããªããåé¡ã¯ãã®ãããªã³ãŒããé
延è©äŸ¡ã®ååã«çŽæ¥éåããããšã§ãïŒå€æ°ãå®çŸ©ãããŠããªãå Žåã is-defined
ã¯falseãè¿ãã¯ãã§ããããã®ã¹ã³ãŒãã§ããã«å®çŸ©ãããã®ã§ã , is-defined
ãtrue->解決ã§ããªãååž°ãè¿ãïŒLessã§æ¡ä»¶ä»ãåœä»€ã®ãããªåå®çŸ©ãå®å
šã«èš±å¯ã§ããªãçç±ã®è©³çŽ°ã«ã€ããŠã¯ãïŒ2072ãåç
§ããŠãã ããïŒã
ã€ãŸããå®éã«ã¯æåŸ
ã©ããã«æ©èœããå¯èœæ§ããããŸãïŒ is-defined
ãæ瀺çã«æ€åºããããã®ãããªååž°ãåé¿ããããã«ã³ãŒãã£ã³ã°ãããŠããªãéãïŒããç¹å®ãããŠããªã/æªå®çŸ©ã®åäœã®äžçš®ãšããŠã®ã¿ãéåžžã®å€æ°ã®å¯èŠæ§ã«ãŒã«ãšã®äžè²«æ§ããªããããããå€ãã®æ··ä¹±ã
@jlukic
<strong i="8">@theme</strong>: 'default'; <strong i="9">@import</strong> "@{theme}"; // theme is set to default not changedValue
ã¯ãããããç§ã®çãã®1ã€ã§ããïŒæ®å¿µãªãããçŸåšããããã¹ãããããšã¯ã§ããŸããããŸãããããã©ã®ããã«çºçããããæšæž¬ããããšãã§ããŸããããã€ã³ããŒãã§ã®å€æ°ã®äœ¿çšã¯çã®é»éè¡ã§ãããããå¯èœã§ããå°çšã®é»éè¡ãäœæããŸãããããåé¡ã§ããå Žåã¯ã¬ããŒããçºè¡ããŠãã ããïŒã
ç§ã¯ããããã®çŽ æŽãããé»éè¡ãšââé¢ä¿ããããšããªã確信ããŠããŸãã
ç§ã¯ãããã°ããããã«éåžžã«åçŽãªå°ãªããã¡ã€ã«ã§äœæ¥ããŠããŸãããããŸã ãã¹ãã±ãŒã¹ãªããžããªãäœæããæ©äŒããããŸããã§ããã
ç§ã®ãã¹ãã§ã¯ã倱æã¯ã€ã³ããŒãã§{@variable}
å€ã䜿çšããããšã«åºæã§ãããcssããããã£ã§ã¯äœ¿çšãããŸããã
ããå°ãªãããŒãã§æ¬åœã«æ¥œããã§ããããã®åé¡ãä¹ãè¶ããããšæããŸãã ããã¯ãå é±Meteor DevShopã§æ«é²ããLESSã®æ¥œããããŒãã®äŸã§ãïŒå³äžã®ãã€ã³ããã±ããã¢ã€ã³ã³ãã¯ãªãã¯ããŠãã ããïŒ
@jlukicç§ã¯ããããã¹ããã modifyVars
ã¯lessc
ãšless.js
ã®äž¡æ¹ã§æåŸ
ã©ããã«ã€ã³ããŒãã®å€æ°ã«å¯ŸããŠæ©èœããŸãïŒ codepenãã¢ãåç
§ããŠãã ãããèŠæšã®æãããURLããã€ã³ããŒãããŸãããããã¯ããªãã®ããŒãžãå®è¡ããããšã«ãªã£ãŠãããã®ãšåãã ãšæããŸã...ãããã£ãŠãå®éã«ã¯åé¡ã¯ä»ã®å Žæã«ããããã§ãïŒã
ãã¹ãã±ãŒã¹ã®äœæã«æéãå²ããŠããã ãããããšãããããŸãã ããã¯ããªãæ確ã§ãã äœãèµ·ãã£ãŠããã®ãããããŸããã調æ»ããå¿ èŠããããŸã
ãã®ãªã¯ãšã¹ãã«äœãåãã¯ãããŸãããïŒ ãã°ããã®éãæªå®çŸ©ã®å€æ°ãã§ãã¯ãå¿é ã§ããã çŸæç¹ã§ã¯ãçæ³ããã¯ã»ã©é ãåé¿çããããŸã...
p {
& when not (@body-text-color = null) {
color: @body-text-color;
}
}
ãã ãããããæ©èœããã«ã¯ãå€æ°ãååšããããã©ã«ãnull
ãšããŠå®çŸ©ãããŠããå¿
èŠããããŸãã 代ããã«ãå€æ°ãããããååšãããã©ããã確èªã§ããã°ãããã¯ã¯ããã«å¹æçã§æè»æ§ããããŸãã
+1
ã€ãŸããèŠçŽãããšããã©ã°ã€ã³å
ã§ã®is-defined(name)
ïŒããã³/ãŸãã¯get-value-of(var-name, fallback-value-if-not-defined)
ïŒé¢æ°ã®å®è£
ã«ã¯ã15è¡æªæºã®ã³ãŒããå¿
èŠã§ãã ã§ããããããªããååã«åæ°ããããªãããããããŠãã ããã
ããã«+1ã ãã©ã°ã€ã³ãšããŠããã«é²å±ã¯ãããŸããïŒ ã€ãŸãã@ seven-phases-maxã¯ãã»ãšãã©ã®å¯çš¿è ãããã³ãŒããããç¥ã£ãŠãããšæããŸãã çŽ15è¡ã®ã³ãŒããå¿ èŠãªå ŽåããªããŸã å®è¡ãããŠããªãã®ã§ããïŒ
çŽ15è¡ã®ã³ãŒããå¿ èŠãªå ŽåããªããŸã å®è¡ãããŠããªãã®ã§ããïŒ
誰ãæ¬åœã«èå³ããªãã®ã§ïŒ ä»ã®èª°ããããªãã®ããã«ãããè¡ããšãããã¹ãŠã®æ©èœã¯ã¯ãŒã«ã§ãéåžžã«äŸ¿å©ãã§ã...ãããããããããªãèªèº«ã®æéã«ã€ããŠã§ãããšããããã¯éæ³ã®ããã«ããã»ã©éèŠã§ã¯ãªããªããŸã;ïŒ
ããªãã¯ã»ãšãã©ã®è²¢ç®è ãããã³ãŒããããç¥ã£ãŠããŸã
ããã¯ãç³ãèš³ãããŸããããä»ã®èª°ãã®èå³ã®åŸã«èªåã®èå³ã®ãããã®ã眮ãå¿ èŠããããšããæå³ã§ã¯ãããŸããïŒç¹ã«ããããç§ãå人çã«èª€çš/æªãã³ãŒãã¹ã¿ã€ã«ãšããŠæ±ãããšã奚å±ãããã®ã§ããå ŽåïŒã
空ã«èãããªãããã«ã @ ashendenã®ãŠãŒã¹ã±ãŒã¹ã®å ŽåïŒããã¯ãã«ãŒã«ã»ããããäžæãïŒäœããã®çç±ã§éåžžã®CSSãªãŒããŒã©ã€ããé©çšã§ããªãå Žåãæ³å®ïŒã«ãã£ãŠæ¬ é¥ãªãã«ã«ã¹ã¿ãã€ãºã§ããããã«ããé©åãªæ¹æ³ã§ãã ãCSSå€ããã¹ãŠå€æ°ã«ãã©ã€ã³ã移åãã䜿çšããªããã®ã䜿çšããããšããã¢ã€ãã¢ïŒããã¯ãã®ã¹ããŒãªãŒã§ãããããå®éã«å£ããŠããçç±ã«ã€ããŠã¯è©³ãã説æããŸãããé·ãããã°æçš¿ïŒã
éåžžãããã¯ããšåŒã°ããã³ã³ã»ãããããã®ã§ã次ã®ããç¥ããæããšã©ãŸãããããšã¯ã§ããŸãããïŒ
// .............................................
// base code:
p {
& when not (is-defined(@body-text-color)) {
color: @body-text-color;
}
& when not (is-defined(@body-text-color)) {
background-color: @body-back-color;
}
}
span {
& when not (is-defined(@body-text-color)) {
color: @body-text-color;
}
& when not (is-defined(@body-text-color)) {
background-color: @body-back-color;
}
}
// .............................................
// customization:
@body-back-color: blue; // how about gradient?
次ã®ããã«çœ®ãæããå¿ èŠããããŸãïŒ
// .............................................
// base code:
p {
.body-text();
.body-back();
// ^ it's actually better to group all this into a singe entity, e.g. .p()
// so that as you don't know WHAT or HOW to be customized
// you don't pre-enforce any limitations and/or hardcoded approach
// for something YOU do not even write
}
span {
.body-text();
.body-back();
}
.body-text() {}
.body-back() {}
// .............................................
// customization:
.body-back() {background-color: blue}
è¡ãæ°ããå¯èœæ§ãæ°ããå¶éãæ°ããŸãã
ã€ãŸããå®éã«ã¯ãCSSããããã£ã䜿çšããªãå Žåã¯ã䜿çšãã人ã®ããã«ãã®ãŸãŸã«ããŠãããŠãã ããã
çãããããã§ç§ã¯ããã«ééããŸããããã®äŸãèŠãŠããããæå¹ãªã±ãŒã¹ã§ãããis-undefinedãªãã§ã¯ä¿®æ£ã§ããªããã©ãããæããŠãã ããã
次ã®ãããªã¢ãžã¥ãŒã«ã®ãããªã©ã€ãã©ãªã«ããŒããããŒããããïŒ
ç§ã®ã³ã¢ã¢ããªã§ã¯ãå€æ°@theme ïŒ 'yellow'ãå®çŸ©ããŠãããã©ã€ãã©ãªãããŸãã€ã³ããŒãããŸããã
ãããŠããã®å Žåãã©ã€ãã©ãªãå°ãªãèŠããå¯èœæ§ãããã®ã¯æ¬¡ã®ãšããã§ãã
@ import'themes / @ {theme} ';
äœ {
èæ¯ïŒ@primaryColor;
}
ãã®ããã«ããŠã @ primaryColor ïŒyellowãš@primaryColor ïŒredã§yellow.lessãšdefault.lessãäœæã§ããŸãã
æçµçã«ãprimaryColorãªã©ã®ã»ãã³ãã£ãã¯å€æ°åã䜿çšããŠã©ã€ãã©ãªãèšè¿°ãããããã®å€æ°ãå®çŸ©ãããäžé£ã®ããŒããæäŸã§ããŸãã ãŸããã©ã€ãã©ãªãŠãŒã¶ãŒã¯ãã¢ããªã§ããŒãåãå®çŸ©ããã©ã€ãã©ãªã¹ã¿ã€ã«ãã€ã³ããŒãããã ãã§ãã
ããããŸãããæ°ã«ããªãã§ãã ãããç§ã¯ãããæã«å ¥ããããã«èŠããŸããç§ã¯ãã®ãããªã€ã³ããŒãããã¯ã¹ã€ã³ãå¿ èŠã§ãïŒ
<strong i="6">@theme</strong>: 'default';
.imports(@theme) when (<strong i="7">@theme</strong> = 'yellow') {
<strong i="8">@import</strong> "themes/yellow";
}
.imports(@theme) when (<strong i="9">@theme</strong> = 'default') {
<strong i="10">@import</strong> "themes/default";
}
.imports(@theme);
@waterpleaã³ãŒãã次ã®ããã«ç°¡ç¥åã§ããŸãã
<strong i="7">@theme</strong>: default;
.imports(yellow) {<strong i="8">@import</strong> "themes/yellow";}
.imports(default) {<strong i="9">@import</strong> "themes/default";}
.imports(@theme);
ãŸããåé€ãããåé·ãªåŒçšç¬Šã«ã泚æããŠãã ããã
æ£çŽãªãšããã <strong i="13">@theme</strong>: yellow;
ïŒ+ãã¹ãŠã®ããã¯ã¹ã€ã³ã³ãŒãïŒãæ瀺çãª<strong i="15">@import</strong> "themes/yellow";
è¡ãããåªããŠãããã©ããã¯ããããŸããã ã€ãŸãããŸã第äžã«ãããªãã¯ãªãŒããŒã©ã€ãã«æ°ã¥ããŠããŸããïŒ ã€ãŸããã©ã€ãã©ãªãŠãŒã¶ãŒãyellow
ã®ãã®ãé©çšããå¿
èŠãããå Žåã¯ãããã©ã«ãã®<strong i="18">@import</strong> "themes/default";
ãé衚瀺ã«ããå¿
èŠã¯ãããŸãã-圌女ã¯é»è²ã®ããŒããã€ã³ããŒãããã ãã§ãïŒã¡ã€ã³ã©ã€ãã©ãªãã¡ã€ã«ã®åŸã®ã©ããã«ãããŸããããããåã1è¡ïŒãšvoilà -ã©ã€ãã©ãªã¯é»è²ã®ãã¡ã€ã«ã§æå®ãããå€æ°å€ã䜿çšããŸãã
ããŒããäžæžãããããããªã»ããããŒãã«åãæ¿ããããããã¡ã€ã«ããªãã·ã§ã³ã§ã€ã³ããŒãããããšã«ãªããŸããã ã©ã€ãã©ãªã䜿çšãããããžã§ã¯ãã§ã¯ããããžã§ã¯ãã§å¥ã®ããŒããå¿ èŠãªå Žåã«ããã®ãã¡ã€ã«ã®ãšã€ãªã¢ã¹ãããŒãã¢ãžã¥ãŒã«ãšããŠäœ¿çšããããã«webpackãæ§æããŸãã ç§ã以åã«æžãããã®ãããªããæžãããã®ã¯ãAngularçšã®UIããããæ§ç¯ããŠãããé«åºŠã«ã¢ãžã¥ãŒã«åãããŠããããããã®å Žåã¯æ©èœããŸããã ãã¿ã³ã1ã€ã ãã€ã³ããŒãããããã³ã³ãããŒã«ãéžæããããšãã§ããŸããããã¯ããã¹ãŠã®ã¹ã¿ã€ã«ã®ã«ãã»ã«åã§äœ¿çšããŠããããŒããèªèããŠããå¿ èŠããããŸãã ãœãªã¥ãŒã·ã§ã³ã®èšå®ã¯ç°¡åãªã®ã§ãæºè¶³ããŠããŸãã
Angularçšã®UIããããæ§ç¯ããŠãããé«åºŠã«ã¢ãžã¥ãŒã«åãããŠããããããã®å Žåã¯ãããªããæžãããã®ã¯æ©èœããŸããã
ç§ã¯ãããåã«ç¡éã«èŠãŸãã-ããã¯æãæ²ããLessïŒèª€ïŒç解ã®åé¡ã®1ã€ã§ã-人ã ã¯åºæ¬çãªLessã®é 延è©äŸ¡ã®ååãèŠéããèªç¶ãªLessã®ãªãŒããŒã©ã€ãã䜿çšãã代ããã«ã倧éã®ãã¡ã€ã«æ³šå ¥ã§ã©ã€ãã©ãªãæ§ç¯ããŸã-æ£å察ã®å€æ°ã»ãã³ãã£ã¯ã¹ïŒPHPãSassãªã©ïŒãæã€èšèªã®ç¿æ £ã«è§ŠçºãããããŒã¹ã®ã«ã¹ã¿ãã€ãºãã¿ãŒã³ã ããã¯ãã ã®èª°ãããã¿ããªãããªãã¯ãããééã£ãŠããïŒããšçµ¶ããå«ãã§ãã以äžã®äœãã§ããã«éããããŸããã
ç§ã¯ãããæ£ããç解ããããšæããŸããç§ã¯ç§ããã¹ãŠãç解ããŠãããšäž»åŒµããŠããŸãã:)ç§ã®äŸã§ããªãã®ææ¡ã説æããããã«æ°ãã€ããŸããïŒ ãããç§ãã¡ãåŸããã®ã§ãïŒ
æå°éã®æ§é äŸã次ã«ç€ºããŸãã
å³æžé€šïŒ
<strong i="10">@import</strong> 'theme-default';
<strong i="13">@import</strong> 'mixins';
some mixins here like resetting default browser button styles
<strong i="20">@primary</strong>: red;
<strong i="23">@secondary</strong>: blue;
<strong i="27">@primary</strong>: green;
<strong i="30">@secondary</strong>: yellow;
<strong i="34">@import</strong> 'import';
.button { color: @primary; }
ãããžã§ã¯ã1ïŒããã©ã«ãã®ããŒãã䜿çšããå¿ èŠããããŸãïŒïŒ
<strong i="42">@import</strong> 'import';
body { background: @secondary; }
ãããžã§ã¯ã2ïŒã»ã«ã³ããªããŒãã䜿çšããå¿ èŠããããŸãïŒïŒ
<strong i="50">@import</strong> 'import';
body { background: @secondary; }
ã©ã€ãã©ãªã¯ããŒãã¢ãžã¥ãŒã«ãšããŠè¿œå ããããããžã§ã¯ãå ã§ã¯ãã©ã€ãã©ãªãããã¿ã³ã³ã³ããŒãã³ãã®ã¿ãã€ã³ããŒãããŸãã ããã¯ãç¬èªã®å°ãªããã¡ã€ã«ãåãããã®ãã¿ã³ã®Angularã¢ãžã¥ãŒã«ã§ãããããProject1ãŸãã¯Project2ã®æ®ãã®éšåãšã¯å¥ã«ã³ã³ãã€ã«ãããŸãã
ç§ã¯ããã«ã€ããŠãã°ããèããŠããŸãããããããžã§ã¯ã1ãŸãã¯ãããžã§ã¯ã2ãã³ã³ããŒãã³ããšãããžã§ã¯ãç¬èªã®ã³ãŒãã®äž¡æ¹ãã³ã³ãã€ã«ãããšãã«äœ¿çšããããŒããã¡ã€ã«ãèšå®ã§ããããã«ãããå°ãªããã¡ã€ã«ãæŽçããæ¹æ³ãæãä»ãããšãã§ããŸããã§ããã ãããžã§ã¯ãã®ã³ãŒãå ãããã¿ã³ã³ã³ããŒãã³ãã®ã¹ã¿ã€ã«ããªãŒããŒã©ã€ãããæ¹æ³ãããããŸããã
代ããã«ãåºæ¬çã«ãimport.lessãäœæããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
<strong i="58">@import</strong> 'theme-default';
<strong i="61">@import</strong> 'mixins';
<strong i="64">@import</strong> (optional) '~custom-theme';
ãŸããProjectså
ã§ãProjectsã³ãŒããšã©ã€ãã©ãªã³ã³ããŒãã³ãã®äž¡æ¹ã®ããŒãå€æ°ããªãŒããŒã©ã€ãããå Žåã¯ãwebpackã䜿çšããŠãã®ãã¡ã€ã«ãã¢ãžã¥ãŒã«ãšããŠãšã€ãªã¢ã¹ããŸãã ãã®ãã¡ã€ã«ã«ã¯ã @ primaryãªã©ã®æ瀺çãªãªãŒããŒã©ã€ãããŸãã¯åã«ã»ã«ã³ããªããŒããžã®åãæ¿ããå«ãŸããŠããå¯èœæ§ããããŸãã
<strong i="69">@import</strong> '~myLibrary/styles/theme-secondary';
ã ããç§ã¯ãªãŒããŒã©ã€ãã«ã€ããŠç¥ã£ãŠããŸããåé¡ã¯âã©ã€ãã©ãªã®ãŠãŒã¶ãŒã¯ãã¡ã€ã³ã©ã€ãã©ãªãã¡ã€ã«ã®åŸã®ã©ããããšã©ã€ãã©ãªã³ã³ããŒãã³ãã³ãŒãã®éã«å ¥ãæ¹æ³ããããŸããã ããªãã®èšãããšã¯ãã¹ã¿ã€ã«ã®ã«ãã»ã«åããªããã¬ãŒã ã¯ãŒã¯ã§ã¯æ©èœãããšæããŸãããAngularã®å Žåã¯æ©èœããªããããœãªã¥ãŒã·ã§ã³ã®å 容ã誀解ããŠããŸããã
åãããŸããã 次ã«ãå®éã«ã¯åãããšã話ããŸãïŒå¥ã®èšèã§ïŒã buttonComponent
ïŒãŸãã¯ãã®ä»ã®ã³ã³ããŒãã³ãïŒãåå¥ã«ã³ã³ãã€ã«ããããšããã«ãããããžã§ã¯ãã«ã¹ã¿ãã€ãºãã¹ã¿ãŒãã¯import.less
ãã¡ã€ã«ã®ãŸãŸã«ãªããç§ãææ¡ãããšããã«å®è¡ãããŸãã ïŒ Project 1
ãšProject 2
ã¯ã buttonComponent
ãšåãã¬ãã«ã®å¥ã®ããã®ä»ãïŒãŸãã¯ããªãŒã«ã€ã³ã¯ã³ãïŒïŒã³ã³ããŒãã³ãã«ãªããŸãããããªãããããžã§ã¯ããïŒã
ã€ãŸãããã®ããã«ç§ã¯ããªããç§ã®å¥œã¿ã«ããããæ£ããããããšèšãã§ãããã
ãã®åé¡ã¯ãæè¿ã®ã¢ã¯ãã£ããã£ããªããããèªåçã«å€ããã®ãšããŠããŒã¯ãããŠããŸãã ãã以äžã®ã¢ã¯ãã£ããã£ãçºçããªãå Žåã¯éããããŸãã è²¢ç®ããŠããã ãããããšãããããŸãã
@stalePing ã
æè¡çã«ã¯ããã®æ©èœãå®è£ ãããã©ã°ã€ã³ã¯2015幎ããå©çšå¯èœã§ãã ããããå人çã«ã¯ãã¹ãããããšããªãã®ã§ãäœãåé¡ãçºçããå Žåã§ãç§ã責ããªãã§ãã ããïŒããã¯åèãŸã§ã«ïŒã
ãã®åé¡ã¯ãæè¿ã®ã¢ã¯ãã£ããã£ããªããããèªåçã«å€ããã®ãšããŠããŒã¯ãããŠããŸãã ãã以äžã®ã¢ã¯ãã£ããã£ãçºçããªãå Žåã¯éããããŸãã è²¢ç®ããŠããã ãããããšãããããŸãã
ã ãã...ç§ã¯ãã®ã¹ã¬ããããã£ãšèªã¿è¿ããŸãããããããã»ãšãã©ã®å Žåãã¹ã³ãŒããå°ãªããã©ããã誀解ããŠãã人ã®å Žåã§ãããã©ãããå®éã«å€æããããšã¯ã§ããŸããã
varsãå®çŸ©ãããŠãããã©ããã確èªããå¿ èŠã¯ããŸããããŸããã æ¶è²»ãããå Žåã¯ãå€æ°ãå®çŸ©ããå¿ èŠããããŸãã
<strong i="7">@import</strong> "library"; // contains @library-color: blue;
@library-color: red;
.box {
color: @library-color;
}
å€_changing_ã«åºã¥ããŠæ¡ä»¶ä»ãã§ããããã£ãèšå®ããå¿ èŠãããããšãç解ããŠããŸããã ããããã£ãå€æ°ã«èšå®ãããŠããå Žåã¯ãå€æ°ã®å€ãå€æŽããã ãã§ãã
ã€ãŸãã library.less
ã«æ¬¡ã®ãããªãã®ãããå ŽåïŒ
@library-color: blue;
.box {
color: @library-color;
}
åºåãèšå®ããããã«èª°ããè¡ãå¿ èŠããããã¹ãŠã®ããšïŒ
<strong i="16">@import</strong> "library";
@library-color: red;
ããã«ããã次ã®ããã«åºåãããŸãã
.box {
color: red;
}
ãã®ã¹ã¬ããã®OPãšä»ã®äººã¯ãã®æ¯ãèããç解ããŠããŸããïŒ
ãdoesvarexistsãã®ãŠãŒã¹ã±ãŒã¹ã¯ãã©ã°ãç«ãŠãè¯ãæ¹æ³ã ãšæããŸãã ã€ãŸããæŠå¿µçã«åçŽãªãåœããã¯ãªããšæããŸãã ãããã true
ãå¯äžã®ãçå®ã®ãå€ã§ããã®ã¯çããããšã§ãã èšãæããã°ãããã¯è¡åã®åé¡ã§ã¯ãªããæè²ã®åé¡ã ãšæããŸãã
ããã¯éåžžãããã©ã«ãã®å€æ°å€ã宣èšãã1è¡ã§ä¿®æ£ãããããããã®åé¡ã解決ããããšãæ€èšããå¿ èŠããããšæããŸãã Less v3.5ã¯ããå¯å®¹ãªååŒã«ç§»è¡ããŠããŸãããã¬ãŒãå ã®å€æ°ã¯ããå¯å®¹ã«è©äŸ¡ãããŠããã®ã§ããããã
ããããç§ã®æ祚ã¯ããŒã§ãã @the-variable: false;
ã¯ãOPãè¿œå ããå¿
èŠããããã¹ãŠã®ããã§ãã
ããã«é¢é£ããŠãããšæããç¹å®ã®åé¡ã解決ããæ¹æ³ã«ã€ããŠè³ªåãããå Žåã¯ãèªç±ã«æçš¿ããŠãã ããã
äºè§£ããŸããã@ calvinjuarezã«æè¬ããŸãã
ãããéããŠãããèµ·ãã£ãããšã¯if()
é¢æ°ã§ãã ã ããããªãã¯color: if((@variable), green, red);
ãããããšãã§ããŸã
@ matthew-deanãã®ãã³ããæžããŠãããŠããããšãã 3.0ãªãªãŒã¹ããŒãã«ifïŒïŒãè¿œå ãããŠããã®ãèŠãŸãããããã®åé¡ãšã¯é¢ä¿ããããŸããã§ãããããã¯ãç§ãç¬èªã®ã±ãŒã¹ãæã£ãŠããããã§ãïŒãã ããã®çž®å°ããŒãžã§ã³ãäœæããæéã¯ãããŸããã§ããïŒã ç¹°ãè¿ãã«ãªããŸãããéåžžã«æè¬ããŠããŸãã ãããã£ããLESSããŒã ã
@kbavåé¡ãããŸããïŒ ãã®ãã³ãã«å ããŠå¥ã®ãã³ãïŒ if()
ãæåã«å°å
¥ããããšããããã¯åºæ¬çã«whenã¬ãŒãïŒ$ïŒã®when
when (@variable)
åŸã®éšåã®ããã«ïŒããåã蟌ãã§ããããããæ¡ä»¶ã®åšãã«ãã¬ã³ãå¿
èŠãšããŸãã
color: if(<strong i="10">@variable</strong>, green, red);
æãåèã«ãªãã³ã¡ã³ã
ãã®ãªã¯ãšã¹ãã«äœãåãã¯ãããŸãããïŒ ãã°ããã®éãæªå®çŸ©ã®å€æ°ãã§ãã¯ãå¿é ã§ããã çŸæç¹ã§ã¯ãçæ³ããã¯ã»ã©é ãåé¿çããããŸã...
ãã ãããããæ©èœããã«ã¯ãå€æ°ãååšããããã©ã«ã
null
ãšããŠå®çŸ©ãããŠããå¿ èŠããããŸãã 代ããã«ãå€æ°ãããããååšãããã©ããã確èªã§ããã°ãããã¯ã¯ããã«å¹æçã§æè»æ§ããããŸãã