ã¢ãŒããã¯ãã£ã®èª€ãã®æŽå²ããã®çµæãããã³ãœãŒã¹ã³ãŒããé©åã«ç¶æããå€æŽã®ã³ã¹ããåæžããããšãå¯èœã«ãã3ã€ã®ã«ãŒã«ã
èæ¯
2014幎ã«ãå瀟ã¯ãããžã§ã¯ãã®åèšèšãéå§ããåœæã®ã¬ã€ã¢ãŠãã®åºç€ãç¯ããŸãããåœæã¯ãBootstrap 3.0.1ã§ããã ç¬ç«ãããµãŒãããŒãã£ã®ã©ã€ãã©ãªãšããŠã§ã¯ãªããç¬èªã®ã³ãŒããšå¯æ¥ã«çµ±åããŸããããã¶ã€ã³ã®å€æ°ãç·šéããLESSãœãŒã¹ã³ãŒãããã«ã¹ã¿ã ããŒãã¹ãã©ãããã³ã³ãã€ã«ããŸããã ãã®ãããžã§ã¯ãã¯ãããŒãã¹ãã©ããå€æ°ã䜿çšããæ°ããå€æ°ãèšå®ãã¡ã€ã«ã«è¿œå ããç¬èªã®ã¢ãžã¥ãŒã«ã§èŠãããŠããŸããã
ãã®ç¬éãç§ã¯ãããæ£ããã¢ãããŒãã ãšæããŸããã
çµå±ãã³ãŒãã¯ã¹ã¿ã€ã«ãåå®çŸ©ããããšãªããç®çã®å€ã§ããã«ã³ã³ãã€ã«ãããŸãã CSSã¯ãã¯ãªãŒã³ã§ã³ã³ãã¯ãã§ãç¹°ãè¿ãããããŸããã ã³ã³ããŒãã³ãã¯ãã°ããŒãã«èšå®ã䜿çšããŠã¹ã¿ã€ã«èšå®ãããŸãã
1幎åŸãå°ãåèšèšããŠããããžã§ã¯ãã¯çç£ã«å
¥ããç§ãã¡ã¯æè¡çãªè² åµãåãäžããŸããã BootstrapãããŒãžã§ã³3.6.xã«ã¢ããã°ã¬ãŒãããããšãããšãã«ãèšå®ãã¡ã€ã«ã§æ°ããvariables.lessãä¿æããã®ã¯ç°¡åã§ã¯ãªãããšãããããŸããã Bootstrapã§ã¯ãå€æ°ã®äžéšãååå€æŽãŸãã¯åé€ããæ°ããå€æ°ãè¿œå ããŸããã ããŒãã¹ãã©ããèªäœã®ã³ã³ããŒãã³ãã¯åé¡ãªãæŽæ°ãããŸãããããããã®å€æŽã«ããã³ã³ãã€ã«äžã«ã³ã³ããŒãã³ããã¯ã©ãã·ã¥ããŸããã
åé¡
ç¶æ³ãåæããåé¡ãå®åŒåããŸããã
é¢é£ããã³ãŒããå€ãããŸãã
ã³ã³ããŒãã³ãèªäœã¯åå¥ã®ãã¡ã€ã«ã«ãããŸããã ããã«ãããã³ã³ããŒãã³ããç¬ç«ããŠãããšããé¯èŠãçãŸããŸããã ããããã³ã³ããŒãã³ãã¯å€éšã®variables.lessãã¡ã€ã«ã§å®£èšãããå€æ°ã䜿çšãããã®ãã¡ã€ã«ããªããšæ©èœããŸããã§ããã ã³ã³ããŒãã³ããååŸããŠå¥ã®ãããžã§ã¯ãã«ç§»åããããšã¯äžå¯èœã§ããã èšå®ãã¡ã€ã«ã«æ²¿ã£ãŠãã©ãã°ããå¿
èŠããããŸããããæéãçµã€ãšãŽãã«ãªããŸããã
ã°ããŒãã«å€æ°ãå€ãããŸãã
ããŒãã¹ãã©ããã«ã¯ãçŽ400åã®å€æ°ããããŸããã æªäœ¿çšã®Bootstrapã³ã³ããŒãã³ããç¡å¹ã«ããŸããããå床å¿
èŠã«ãªã£ãå Žåã«åããŠãèšå®ã«å€æ°ãæ®ããŸããã ãŸããå€æ°ã100åãŸãã¯1.5åè¿œå ããŸããã ãã¹ãŠã®ååãæãåºãããšã¯ã§ããŸãããé©åãªååããã°ããèŠã€ããã®ã¯å°é£ã§ãã åœåèŠåãã³ã¡ã³ãããã£ãŠãã500以äžã®å€æ°ã®æ§æå
ã移åããã®ã¯å°é£ã§ãã
ã°ããŒãã«å€æ°ã®ååã¯å¶åŸ¡äžèœã§ãã
åãå€æ°ãç°ãªããã¡ã€ã«ã§äœ¿çšã§ããã³ãŒãå
ã®ãã¹ãŠã®çºçã远跡ããã®ã¯é·ãå°é£ã§ããã ããã³ã³ããŒãã³ãã®å€æ°ã®å€ãå€æŽãããšãä»ã®ã³ã³ããŒãã³ããç Žæãããªã¹ã¯ããããŸããã ããŒãã³ãŒãã®éçºè
ã¯ãåæ§ã®ååãšå€ãæã€æ°ããå€æ°ãäœæããåœåããžãã¯ã«åŸããªããªããŸããã
決å®æ¹æ³
ç§ãã¡ã®åé¡ãå
æããã®ã«åœ¹ç«ã€3ã€ã®ã«ãŒã«ãæãã€ããŸããã
å€æ°ã¯ã宣èšãããŠãããã¡ã€ã«ã§ã®ã¿äœ¿çšãããŸãã
ã³ã³ããŒãã³ãèªäœã®ãã¡ã€ã«ã«å¿
èŠãªå€æ°ããã¹ãŠäœæããä»ã®ãã¡ã€ã«ã®å€æ°ã䜿çšããªãã®ã¯æ£ããããšã§ãã ã³ã³ããŒãã³ãã¯ç¬ç«ããã³ã³ãã€ã«äžã«ç Žæããããšãªããããžã§ã¯ãéã§æ¥ç¶ããã³ç§»åã§ããŸãã åã³ã³ããŒãã³ãã«ã¯ãä»ã®ã³ã³ããŒãã³ãã§äœ¿çšããããšã¯çŠæ¢ãããŠãããä»ã®ãã¡ã€ã«ã§ã¯åŒã³åºãããªãç¬èªã®å€æ°ã»ããããããŸãã å€æ°ãåäžã®ãã¡ã€ã«ãè¶
ããªãå Žåãå€æ°ãã©ã®ããã«äœ¿çšãããäœã圱é¿ããããç°¡åã«ç¢ºèªã§ããŸãã
ã³ã³ããŒãã³ãå
ã®ãã¹ãŠã®å€æ°ã¯ããŒã«ã«ã§ãã
åã³ã³ããŒãã³ãã«ã¯ç¬èªã®å€æ°ããããããããããããŒã«ã«ã«ããŸãã ããã«ãããããŒãã³ã°ã®åé¡ããªããªããŸããã³ã³ããŒãã³ãã§ã¯ãåãååã§ç°ãªãå€ãæã€å€æ°ã䜿çšã§ããŸã-ãããã¯äºãã«ç«¶åããŸããã
ã°ããŒãã«å€æ°ã¯ãèšå®ãã¡ã€ã«å
ã§ã®ã¿äœ¿çšãããŸãã
æåã®2ã€ã®ã«ãŒã«ã®ãããã§ãã°ããŒãã«å€æ°ã®æ°ã倧å¹
ã«æžããããšãã§ããŸããããŸã å¿
èŠã§ãã ã°ããŒãã«å€æ°ã¯ãã¡ã€ã³ãããžã§ã¯ããã¡ã€ã«ãŸãã¯config.lessã¿ã€ãã®ãã¡ã€ã«ã§å®£èšãããŸãã ã«ãŒã«1ãé©çšãããŸã-å€æ°ã¯ãã¡ã€ã«ã®å¶éå€ã§ã¯äœ¿çšãããŸããã ããã¯ãã³ã³ããŒãã³ããã¡ã€ã«å
ã§ã°ããŒãã«å€æ°ã䜿çšã§ããªãããšãæå³ããŸãã ããããã³ã³ããŒãã³ãå
ã®ã°ããŒãã«å€æ°ã®å€ãããã·ã¥ããæåã®ã«ãŒã«ã«éåããããšãªããæ¹æ³ããããŸãã ãããè¡ãæ¹æ³ã¯ã以äžã®äŸãã芧ãã ããã
3çªç®ã®ã«ãŒã«ã¯åé·ã§ãã æåã®2ã€ã芳å¯ããããšã«ããã3ã€ç®ãèªåçã«èŠ³å¯ããŸãã ããããå®éã«ã¯ãããŒã«ã«å€æ°ãäœæããã®ã§ã¯ãªããã°ããŒãã«å€æ°ããã°ãã䜿çšããããã«ãæãåçŽãªãã¹ã«æ²¿ã£ãŠé²ããšãã倧ããªèªæããããŸãã 3çªç®ã®ã«ãŒã«ã¯ããããè¡ãããšã¯æ害ã§ãããäžå¿
èŠãªäŸåé¢ä¿ãäœæããã³ãŒããã€ã³ãã£ã³ã°ã«ã€ãªããããšãæãåºãããŸãã
å®éã«ã«ãŒã«ãé©çšããŸãã
LESSã§ã®å®è£
ããŒãžãã¹ã¿ã€ãªã³ã°ããããã®æãåçŽãªã³ã³ããŒãã³ããæ³åããŠãã ããã ã«ãŒã«ïŒ1ã«åŸã£ãŠãã³ã³ããŒãã³ããã¡ã€ã«å
ã«å€æ°ãäœæããŸãã
ã«ãŒã«1
å€æ°ã¯ã宣èšãããŠãããã¡ã€ã«ã§ã®ã¿äœ¿çšãããŸãã
.page { padding: 40px; color: #000; background-color: #fff; }
ããã ã£ãã ã³ã³ããŒãã³ãã³ãŒãã®äŸã
// page.less v0.1 @padding: 40px; @txt-color: #000; @bg-color: #fff; .page { padding: @padding; color: @txt-color; background-color: @bg-color; }
ãªã£ãŠããŸãã å€æ°ã¯ã°ããŒãã«ã¹ã³ãŒãã§å®£èšãããããŸãã«ãäžè¬çãªååãæã£ãŠããŸãã ããã¯æªãã§ãã
äžèšã®äŸã§ã¯ãã°ããŒãã«ã¹ã³ãŒãã§å€æ°ã宣èšããŸããããã®ãããååã®ç«¶åãçºçããŸãã åãååã®å€æ°ãé£æ¥ããã³ã³ããŒãã³ãã«çŸãããšãã³ã³ããŒãã³ãã¯äºãã«å£ããŸãã
ããŒã«ã«å€æ°
ã¹ã³ãŒãã¯ãã»ã¬ã¯ã¿ãŒã®äžæ¬åŒ§ã®éã®ãã¹ããŒã¹ãã§ãïŒ {
ããã³}
ã äžæ¬åŒ§å
ã§å®£èšãããå€æ°ã¯ããããã®æ¬åŒ§å
ããã³åæ¬åŒ§å
ã§ã®ã¿æ©èœããŸãããå€éšã§äœ¿çšããããšã¯ã§ããŸããã
è§ãã£ãããªãå Žåãããã¯æé«ã¬ãã«- ã°ããŒãã«ã¹ã³ãŒãã§ãã
åã¹ã³ãŒãã®å€æ°ã¯ã芪ã¹ã³ãŒãã®åãååã®å€æ°ããã倧ãããªã£ãŠããŸãã ã°ããŒãã«å€æ°ã¯ãååã®äžèŽæã«æãäœãåªå
床ãæã¡ãŸãã
ã«ãŒã«No. 2ã«ãããå€æ°ãããŒã«ã«ã«ããã»ã¬ã¯ã¿ãŒå
ã«ç§»åããŸãã
ã«ãŒã«2
ã³ã³ããŒãã³ãå
ã®ãã¹ãŠã®å€æ°ã¯ããŒã«ã«ã§ãã
// page.less v0.2 .page { @padding: 40px; @txt-color: #000; @bg-color: #fff; padding: @padding; color: @txt-color; background-color: @bg-color; }
å€æ°ã¯ã»ã¬ã¯ã¿ãŒå
ã§å®£èšãããããŒã«ã«ã«ãªã£ããããååã®ç«¶åã¯çºçããŸããã
ããã§ãä»ã®ã³ã³ããŒãã³ããšã®ååã®ç«¶åã¯ãªããªããŸãã æåãš2çªç®ã®åé¡ã解決ããŸãããå€éšäŸåé¢ä¿ã®ãªãåé¢ãããã¹ãããããååŸããŸããã ãããããã®åœ¢åŒã®ã³ã³ããŒãã³ãã®ããŒã«ã«å€æ°ãå€éšããåå®çŸ©ããæ¹æ³ã¯ããããŸããã ãããã£ãŠããããžã§ã¯ãã®ã°ããŒãã«å€æ°ã䜿çšããŠã³ã³ããŒãã³ããã«ã¹ã¿ãã€ãºããããã«ãç°ãªã圢åŒã®è¡šèšæ³ãæãã€ããŸããã
é¢æ°ãšããŠã®ããã¯ã¹ã€ã³
LESSã¯ãããã¯ã¹ã€ã³ãé¢æ°ãšããŠäœ¿çšã§ããŸãã ããã¯ã¹ã€ã³å
ã§å€æ°ãäœæããã»ã¬ã¯ã¿ãŒå
ã§ããã¯ã¹ã€ã³ãåŒã³åºããšãå€æ°ã¯ãã®ã»ã¬ã¯ã¿ãŒã®ã¹ã³ãŒãã§äœ¿çšå¯èœã«ãªããŸãã
LESSããã¥ã¡ã³ãã®é¢æ°ãšããŠã®mixinãèªãã§ãã ããã
.page .page-settings()
å
ã®å€æ°ã®å®£èšãåŒãåºãã .page
ã»ã¬ã¯ã¿ãŒå
ã§åŒã³åºããŸãã
// page.less v0.3 .page-settings() { @padding: 40px; @txt-color: #000; @bg-color: #fff; } .page { .page-settings(); padding: @padding; color: @txt-color; background-color: @bg-color; }
ããã¯ã¹ã€ã³ã¯ãã»ã¬ã¯ã¿ãŒã®å¯èŠç¯å²ã«å€æ°ãé
ä¿¡ããŸãã
å€æ°ã¯ã°ããŒãã«ããã¯ã¹ã€ã³å
ã§ããŒã«ã©ã€ãºãããŸãã ã³ãŒãã§ããã¯ã¹ã€ã³ãåŒã³åºããšãå€æ°ã¯.page
ã»ã¬ã¯ã¿ãŒã®ã¹ã³ãŒãã§äœ¿çšå¯èœã«ãªããŸããããããã§ãããŒã«ã«ã®ãŸãŸã§ãã
ãã®ãããªmixinã¯CSSã³ãŒããçæããŸããããã®å¯äžã®ã¿ã¹ã¯ã¯ãç®çã®ã¹ã³ãŒãã«å€æ°ãé
ä¿¡ããããšã§ãã ããšãã°ãã°ããŒãã«ã¹ã³ãŒãã§ãã®ããã¯ã¹ã€ã³ãåŒã³åºããšãå€æ°ã¯ã°ããŒãã«ã«ãªããŸãã ãã ããå€æ°ãããã«ã°ããŒãã«ã«å®£èšããã®ãšåãã§ãã
å
±éã®ååãæã€ããã€ãã®ã°ããŒãã«å€æ°ã®ä»£ããã«ã1ã€ã®ã°ããŒãã«ããã¯ã¹ã€ã³ãäœæããŸããã ãããžã§ã¯ãã«åãååã®2ã€ã®ã³ã³ããŒãã³ããå«ããããšã¯ã§ããŸãããã€ãŸããããã¯ã¹ã€ã³ã®ååã¯äžæã«ãªããŸãã
Mixin Fusion
LESSã«ã¯å€æ°ã®ãé
延èšç®ãããããŸãã䜿çšããåã«LESSå€æ°ã宣èšããå¿
èŠã¯ãªããåŸã§å®£èšã§ããŸãã ã³ã³ãã€ã«æã«ãLESSããŒãµãŒã¯å€æ°ã®å®çŸ©ãèŠã€ããCSSã§ãã®å€æ°ã®å€ãã¬ã³ããªã³ã°ããŸãã
LESSããã¥ã¡ã³ãã®é
延è©äŸ¡ã®äŸãšããã©ã«ãå€æ°ã®ãªãŒããŒã©ã€ããåç
§ããŠãã ããã
å€æ°ãåå®çŸ©ãããšã䜿çšãããã¹ãŠã®å Žæã§ããœãŒã¹ã³ãŒãå
ã®é åºã§åªå
é äœãä»ãããããããææ°ã®å®çŸ©ã®å€ãæå¹ã«ãªããŸãã ãã®æå³ã§ãå€æ°ã¯å®æ°ã®ããã«æ¯ãèããŸãã
ãã®ãããå€æ°ã¯äœ¿çšåãšäœ¿çšåŸã®äž¡æ¹ã§å®£èšã§ããããã¯ã¹ã€ã³ã¯å€æ°ã®äžçš®ã§ãã åãååã§ç°ãªãã³ã³ãã³ããæã€2ã€ã®ããã¯ã¹ã€ã³ãäœæãããšããããã¯å
éšãçµåããŸãã ãŸããããã¯ã¹ã€ã³å
ã«åãååã®å€æ°ãããå ŽåããªãŒããŒã©ã€ããçºçããŸãã æåŸã®ããã¯ã¹ã€ã³ã®åªå
é äœãé«ããªã£ãŠããŸãã
3ã€ã®ãã¡ã€ã«ãæ€èšããŠãã ããã
// projectname.less @import 'normalize.css'; @import 'typography.less'; @import 'page.less'; // ... @import 'config.less';
ã¡ã€ã³ãã¡ã€ã«ã ã³ã³ããŒãã³ããšèšå®ãã€ã³ããŒãããŸãã æ§æã¯æåŸã§ãã
// page.less v0.3 .page-settings() { @padding: 40px; @txt-color: #000; @bg-color: #fff; } .page { .page-settings(); padding: @padding; color: @txt-color; background-color: @bg-color; }
æå ãã¹ãŠã®å€æ°ã¯ããŒã«ã«ã§ãããããã¯ã¹ã€ã³ã«ä¿åãããŸãã
// config.less @glob-text-color: white; @glob-bg-color: darkblue; // .page-settings() { @txt-color: @glob-text-color; @bg-color: @glob-bg-color; }
ãããžã§ã¯ãæ§æ èšå®mixinã䜿çšããŠã³ã³ããŒãã³ããã©ã¡ãŒã¿ãåå®çŸ©ããŸãã
æãèå³æ·±ãããšã¯ãã¹ãŠèšå®ã§è¡ãããŸãã ã°ããŒãã«å€æ°ãäœæããåããã¡ã€ã«å
ã§äœ¿çšããŠã³ã³ããŒãã³ããã«ã¹ã¿ãã€ãºããŸããã
Mixin .page-settings()
2å宣èšãããŠããŸãã ããã©ã«ãå€ã䜿çšããpage.less
ãã¡ã€ã«å
ã®1åç®ãæ°ããå€ã䜿çšããconfig.less
ãã¡ã€ã«å
ã®2åç®ã ã³ã³ãã€ã«ã®æ®µéã§ãããã¯ã¹ã€ã³ã¯æ¥çãããæ°ããå€æ°ãããã©ã«ãã®å€æ°ããªãŒããŒã©ã€ãããæ§æãã¡ã€ã«ããã®æ°ããå€ã§CSSãã¬ã³ããªã³ã°ãããŸãã
ã«ãŒã«3
ã°ããŒãã«å€æ°ã¯ãèšå®ãã¡ã€ã«å
ã§ã®ã¿äœ¿çšãããŸãã
config.less
ãªã¹ãã®æåŸã«å«ãŸããŠããããšã«æ³šæããŠãã ããã ããã¯ãæ§æå
ã®mixin宣èšãã³ã³ããŒãã³ããã¡ã€ã«å
ã®å
ã®å®£èšãããé«ãåªå
床ãæã€ããã«ããããã«å¿
èŠã§ãã ã³ã³ããŒãã³ãã®åã«config.less
ãé
眮ããå Žåãèšå®ã¯é©çšãããŸãããããã¯ããæåŸã®å®çŸ©ãæã匷ãããšããã«ãŒã«ãããã¯ã¹ã€ã³ã«ãäœçšããããã§ãã
ãã®ããã«ããŠãã³ã³ããŒãã³ãã®ãœãŒã¹ã³ãŒããå€æŽããã«ãã³ã³ããŒãã³ããã¡ã€ã«å
ã§ã°ããŒãã«å€æ°ã®å€ãããŒã«ããŸããã ãã®å Žåã3ã€ã®ã«ãŒã«ãã¹ãŠãéµå®ãããŸããã
- å€æ°ã¯ãã¡ã€ã«å
ã§ã®ã¿äœ¿çšãããã°ããŒãã«å€æ°ã
config.less
ãã¡ã€ã«ã®å€éšã§ã¯åŒã³åºãããŸããã§ããã - ã³ã³ããŒãã³ãå€æ°ã¯ããŒã«ã«ã®ãŸãŸã§ãã°ããŒãã«ã¹ã³ãŒããè©°ãŸãããŸããã§ããã
- ã°ããŒãã«å€æ°ã¯ã³ã³ããŒãã³ãå
ã§çŽæ¥äœ¿çšãããŸããã§ããããã°ããŒãã«å€æ°ã®å€ã¯ããªãããŒãªæ¹æ³ã§ã³ã³ããŒãã³ãã«å
¥ããŸããã
å¶éäºé
ã°ããŒãã«å€æ°ã®ååãããŒã«ã«å€æ°ã®ååãšäžèŽããããšã¯äžå¯èœã§ããååž°ãçºçããCSSã¯ã³ã³ãã€ã«ãããŸããã ééããªãããã«ããããã«ããã¹ãŠã®ã°ããŒãã«å€æ°ã«æ¥é èŸãä»ããŠèšè¿°ããããšããå§ãããŸãã
// @txt-color: white; .page-settings() { // @txt-color: @txt-color; }
ééã£ãã å€æ°ãååž°çã«å®çŸ©ãããšãã³ã³ãã€ã«ãšã©ãŒãçºçããŸãã
// â @glob-txt-color: white; .page-settings() { // @txt-color: @glob-txt-color; }
ããã ãã ã°ããŒãã«å€æ°ã«ã¯ç¬èªã®ãã¬ãã£ãã¯ã¹glob-ããããååã®äžèŽãæé€ããŸãã
SASSã§ã®å®è£
SASSã¯LESSãšã¯ç°ãªããã¹ã¯ãªããããã°ã©ãã³ã°èšèªã«äŒŒãŠããŸãããé
延èšç®ãã¯ãªããå€æ°ã¯ã³ãŒãã§äœ¿çšããåã«å®£èšããå¿
èŠããããŸãã å€æ°ãå®çŸ©ããŠã³ãŒãã§äœ¿çšãããããåå®çŸ©ããŠå床䜿çšãããšãæåã®åŒã³åºãã§CSSã®å
ã®å€ãååŸããã2çªç®ã®åŒã³åºãã§æ°ããå€ãååŸãããŸãã LESSã®ãããªmixinããªãã¯ã¯å€±æããŸãã ããããä»ã®è§£æ±ºçããããŸãã
ããããªããžã§ã¯ãã«ã³ã³ããŒãã³ããèšå®ããããã®å€æ°ã»ãããä¿åãããšäŸ¿å©ã§ãã ããã¯ããŒãšå€ã®ãã¢ã®é
åã§ãã map-getã¡ãœããã¯é
åããç¹å®ã®å€ãæœåºããmap-mergeã¡ãœããã¯2ã€ã®é
åã1ã€ã«çµåããŠãå
ã®é
åãè£å®ãŸãã¯æžãæããŸãã
SASSããã¥ã¡ã³ãã®Mapsã«ã€ããŠèªãã§ãã ããã
å€éšããã®åå®çŸ©ã®å¯èœæ§ã®ãªãæãåçŽãªã³ã³ããŒãã³ãã¯æ¬¡ã®ããã«ãªããŸãã
// page.scss v0.1 $page-settings: ( padding: 40px, bg-color: #fff, text-color: #000, ); .page { padding: map-get($page-settings, padding); background-color: map-get($page-settings, bg-color); color: map-get($page-settings, text-color); }
èšå®ã¯ããããªããžã§ã¯ãã«ä¿åãããmap-getã䜿çšããŠã³ãŒãã§åŒã³åºãããŸã
å¥ã®ãã¡ã€ã«ããã³ã³ããŒãã³ããæ§æããã«ã¯ãå
ã®èšå®ã§å€éšæ§æãå¶åŸ¡ããæ©èœãæäŸããå¿
èŠããããŸãã 3ã€ã®ãã¡ã€ã«ãæ€èšããŠãã ããã
// projectname.scss @import: 'config'; @import: 'normalize'; @import: 'typography'; @import: 'page'; // ...
ã¡ã€ã³ãã¡ã€ã«ã
æåã«èšå®ãã€ã³ããŒããã次ã«ã³ã³ããŒãã³ããã€ã³ããŒãããŸãã
// config.scss $glob-text-color: white; $glob-bg-color: darkblue; // $page-settings: ( bg-color: $glob-bg-color, text-color: $glob-text-color, );
èšå®
ã°ããŒãã«å€æ°ãäœæããã³ã³ããŒãã³ãã®ãã©ã¡ãŒã¿ãŒãåå®çŸ©ããŸãã
// page.scss v0.2 $page-override: ( ); // [1] @if variable-exists(page-settings) { $page-override: $page-settings; // [2] } $page-settings: map-merge(( padding: 40px, bg-color: #fff, text-color: #000, ), $page-override); // [3] .page { padding: map-get($page-settings, padding); background-color: map-get($page-settings, bg-color); color: map-get($page-settings, text-color); }
æå
ãã§ãã¯ãè¿œå ïŒã³ã³ããŒãã³ãããªãŒããŒã©ã€ãããèšå®ã¯ãããŸããïŒ
[1]
-ã³ã³ããŒãã³ãã§ã¯ãæåã«ç©ºã®$page-override
é
åãæã€å€æ°ã宣èšããŸããã
[2]
-次ã«ãå€æ°$page-settings
ãã§ã«ååšãããã©ããã確èªããŸããã ãŸããæ§æå
ã§æ¢ã«å®£èšãããŠããå Žåã¯ããã®å€ãå€æ°$page-override
å²ãåœãŠãŸããã
[3]
-ãããŠãå
ã®èšå®ãš$page-override
ãå€æ°$page-settings
ã
$page-settings
é
åã以åã«ã°ããŒãã«æ§æã§å®£èšãããŠããå Žåã $page-override
ã¯ããŒãžæã«èšå®ãäžæžãããŸãã ããã§ãªãå Žåãå€æ°$page-override
ã¯ç©ºã®é
åãæã¡ãå
ã®å€ã¯èšå®ã«æ®ããŸãã
SASSã®ãã¹ãŠã®åŸ®åŠããç¥ã£ãŠããããã§ã¯ãããŸãããããã®ææ³ãããçŸããæ¹æ³ã§å®è£
ããæ¹æ³ããããããããŸããã
ãã®çµæãLESSãšã¯ç°ãªããã³ãŒãã§äœ¿çšããåã«ãã¹ãŠã®èšå®ãäºåã«åå®çŸ©ããå¿
èŠãããã ãã§ããã¹ãŠåãå©ç¹ãåŸãããŸãã
çµè«
ããªããäœãæžããŠãããã¯é¢ä¿ãããŸãã-LESSãSASSãã«ã¹ã¿ã ããããã£ãåããCSSããŸãã¯Javascript-ã§ããã ãå°ãªãã°ããŒãã«å€æ°ãå¿
èŠã§ãã
CSSããªããã»ããµã§ã¯ã次ã®3ã€ã®ã«ãŒã«ã䜿çšããŠæ··ä¹±ãåé¿ããŸãã
- å€æ°ã¯ã宣èšãããŠãããã¡ã€ã«ã§ã®ã¿äœ¿çšãããŸãã
- ã³ã³ããŒãã³ãå
ã®ãã¹ãŠã®å€æ°ã¯ããŒã«ã«ã§ãã
- ã°ããŒãã«å€æ°ã¯ãèšå®ãã¡ã€ã«å
ã§ã®ã¿äœ¿çšãããŸãã
ã³ã³ããŒãã³ãå
ã®ã°ããŒãã«èšå®ãããã·ã¥ããã«ã¯ãå€æ°ãããã¯ã¹ã€ã³ïŒLESSïŒãŸãã¯ããããªããžã§ã¯ãïŒSASSïŒã«åéããŸãã
æ£ããå Žæã§èšå®ãåå®çŸ©ããŸããLESSã§ã¯-çµã¿èŸŒã¿åŸãSASSã§ã¯-çµã¿èŸŒã¿åã
å®éã®äŸ
ç§ã¯2015幎12æã«LESSã®ããã«ãã®ææ³ãçå®ãããã以æ¥ãä»äºãå人ã®ãããžã§ã¯ãã«é©çšããŠããŸãã
1幎åã§ãããã€ãã®ãããªãã¯npmããã±ãŒãžãç»å ŽããŸããã ãããå®éã®ç¶æ³ã§ã©ã®ããã«æ©èœããããããããç解ããã«ã¯ããœãŒã¹ã³ãŒãããã§ãã¯ããŠãã ããã
bettertext.css-ãµã€ãã®ã¿ã€ãã°ã©ãã£ã 11åã®å€æ°ã䜿çšããŠæ§æãããæ®ãã®40åã¯æ°åŒã«ãã£ãŠèšç®ãããŸãã èšç®ã¯å¥ã®ããã¯ã¹ã€ã³ã§å®è¡ããããããåŒãåå®çŸ©ã§ããŸãã ã³ã³ããŒãã³ãã«ã¯ã¯ã©ã¹ããªãããã¹ãŠã®ã¹ã¿ã€ã«ãã¿ã°ã«é©çšãããŸãã ããŒã«ã«ã¹ã³ãŒããäœæããããã«ãå€æ°å
ã®ãã¹ãŠã®ã»ã¬ã¯ã¿ãŒãã¿ã°ã§é
眮ããŸããLESSã§ã¯ãããã¯ãåé¢ã«ãŒã«ã»ããããšåŒã°ããŸãã
LESSããã¥ã¡ã³ããŒã·ã§ã³ã®ç¬ç«ããã«ãŒã«ã»ããã«ã€ããŠèªãã§ãã ããã
links.less-ãã©ãŒã«ã¹ãã¢ãã¡ãŒã·ã§ã³ãæ·¡ãäžç·ä»ãã®ãªã³ã¯ã®ã¹ã¿ã€ã«ã ã³ã³ããŒãã³ãã«ã¯ãèšå®ã®ããã¯ã¹ã€ã³ã®ä»ã«ãç¬èªã®ã»ã¬ã¯ã¿ãŒå
ã®ãªã³ã¯ã«è²ãä»ããããã®è¿œå ã®ã°ããŒãã«ããã¯ã¹ã€ã³ããããŸãã
flxgrid.css-ãã¬ãã¯ã¹äžã®HTMLã°ãªããã®ãžã§ãã¬ãŒã¿ãŒã 5ã€ã®å€æ°ã䜿çšããŠæ§æãããä»»æã®ãã¬ãŒã¯ãã€ã³ããšä»»æã®æ°ã®åãæã€ã¢ãããã£ãã°ãªããã®ã¯ã©ã¹ãçæããŸãã ã³ã³ããŒãã³ãã§ã¯ãèšç®ãšãµãŒãã¹ããã¯ã¹ã€ã³ã¯ããŒã«ã«ã¹ã³ãŒãå
ã«é ãããŠããŸãã ã°ããŒãã«èšå®ã§è¡šç€ºãããã®ã¯ããã¯ã¹ã€ã³ã®ã¿ã§ãã
space.less-ã¬ã€ã¢ãŠãã®ã€ã³ãã³ãã管çããããã®ããŒã«ã flxgrid.cssã°ãªãããšé£æºããŠåäœããããã«èšèšãããŠããŸãã ãããã®é©å¿æ§ã¯åãæ¹æ³ã§èšå®ãããŸãããspace.lessã¯ç¬èªã®èšå®ãšããŒã«ã«å€æ°ã®çµã¿åããã䜿çšããŸã-ã³ãŒãspace.lessã¯flxgrid.cssãšã¯äœã®é¢ä¿ããããŸããã
ããŒãã¹ãã©ãã¯
ä»ãæ°ãããããžã§ã¯ãã§Lessäžã®Bootstrap 3.xxã䜿çšããå¿
èŠãããå Žåãã€ã³ããŒãããããã¹ãŠã®Bootstrapã¢ãžã¥ãŒã«ãå€æ°ïŒãåãé¢ãããã«ãŒã«ã»ãããïŒã§bootsrtap-settings
ãã bootsrtap-settings
variables.less
ãã¡ã€ã«ã®ãã¹ãŠã®èšå®ãbootsrtap-settings
ããŒãã¹ãã©ããã°ããŒãã«å€æ°ã¯ã°ããŒãã«ã§ã¯ãªããªãããã€ãã£ãã³ãŒãå
ã§äœ¿çšã§ããªããªããŸããã äžèšã®äŸã®ããã«ãå¿
èŠã«å¿ããŠBootstrapèšå®ãã«ã¹ã¿ãã€ãºãããããžã§ã¯ãèšå®ã§bootsrtap-settings
åŒã³åºãbootsrtap-settings
ã 次ã«ãBootstrapã®æŽæ°ã§ã¯ãã«ã¹ã¿ãã€ãºãããèšå®ãæã€mixinã®ã¿ãä¿®æ£ããå¿
èŠããããŸãã
ãœãŒã¹-http://paulradzkov.com/2017/local_variables/