匷åãªCSS @splitã¢ããã«ãŒã«ã«ããé«åºŠãªã³ãŒãåå²ã§ãããŒãžèªã¿èŸŒã¿ã®é«éåãUXåäžãWebããã©ãŒãã³ã¹ã®æé©åãå®çŸããæ¹æ³ã解説ããŸãã
CSS @splitïŒWebããã©ãŒãã³ã¹ã匷åããã³ãŒãåå²ã®åŸ¹åºè§£èª¬
çµ¶ããé²åããWebéçºã®äžçã«ãããŠãããã©ãŒãã³ã¹ã®æé©åã¯æãéèŠã§ãããŠãŒã¶ãŒã¯ãŠã§ããµã€ããè¿
éã«èªã¿èŸŒãŸããå³åº§ã«åå¿ããããšãæåŸ
ããŠããŸãããããå®çŸããããã®éèŠãªåŽé¢ã®äžã€ãå¹ççãªã³ãŒãé
ä¿¡ã§ãããããã§CSSã®ã³ãŒãåå²ã掻èºããŸãããŸã ãã¹ãŠã®ãã©ãŠã¶ã§åºãå®è£
ãããŠããããã§ã¯ãããŸãããã@split
ã¢ããã«ãŒã«ã¯ãWebããã©ãŒãã³ã¹åäžã®ããã«CSSãã¢ãžã¥ãŒã«åããæ¡ä»¶ä»ãã§èªã¿èŸŒãããã®ã匷åã§æšæºããŒã¹ã®ã¢ãããŒããæäŸããŸãã
CSSã³ãŒãåå²ãšã¯äœãïŒ
CSSã³ãŒãåå²ãšã¯ã倧ããªCSSãã¡ã€ã«ãããå°ããã管çãããããã£ã³ã¯ïŒå¡ïŒã«åå²ããããšã§ãããããã®å°ããªãã¡ã€ã«ã¯ãããããç¬ç«ããŠãå¿ èŠãªãšãã«ã®ã¿èªã¿èŸŒãããšãã§ããŸãããã®ããªã³ããã³ããã§ã®èªã¿èŸŒã¿æŠç¥ã«ããããã©ãŠã¶ãããŒãžãã¬ã³ããªã³ã°ããåã«CSSã¹ã¿ã€ã«ã·ãŒãå šäœãããŠã³ããŒãããŠè§£æããå¿ èŠããªããªãããããŠã§ããµã€ãã®åæèªã¿èŸŒã¿æéãççž®ãããŸããã³ãŒãåå²ã¯ããŠã§ããµã€ããããéããããå¿çæ§ãé«ããšæããããããšã§ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ïŒUXïŒãåäžãããŸãã
åŸæ¥ãéçºè
ã¯CSSã®ã³ãŒãåå²ãå®çŸããããã«ãããŸããŸãªããªããã»ããµïŒSassãLessãªã©ïŒããã«ãããŒã«ïŒWebpackãParcelãªã©ïŒã«äŸåããŠããŸããããããã®ããŒã«ã¯ããã°ãã°è€éãªèšå®ãã¯ãŒã¯ãããŒã䌎ããŸãã@split
ã¢ããã«ãŒã«ã¯ããã€ãã£ãã®CSSã³ãŒãå岿©èœããã©ãŠã¶ã«ãããããããã»ã¹ãç°¡çŽ åããããåªããããã©ãŒãã³ã¹æé©åãæäŸããå¯èœæ§ãç§ããŠããŸãã
@split
ã¢ããã«ãŒã«ã®ç޹ä»
@split
ã¢ããã«ãŒã«ã¯ãéçºè
ãCSSã¹ã¿ã€ã«ã·ãŒãå
ã«ç°ãªããã¹ããªããããå®çŸ©ã§ãããææ¡äžã®CSSæ©èœã§ããåã¹ããªããã¯ãç¹å®ã®æ¡ä»¶ã«åºã¥ããŠç¬ç«ããŠèªã¿èŸŒãããšãã§ãããåå¥ã®ã¹ã¿ã€ã«ã»ããã衚ããŸãã
@split
ã®æ§æ
@split
ã¢ããã«ãŒã«ã®åºæ¬çãªæ§æã¯æ¬¡ã®ãšããã§ãïŒ
@split [split-name] {
[condition]: {
[CSS rules];
}
...
}
åã³ã³ããŒãã³ããåè§£ããŠã¿ãŸãããïŒ
@split [split-name]
: ãŠããŒã¯ãªååã§æ°ããã¹ããªããã宣èšããŸãããã®ååã¯åŸã§ã¹ããªãããåç §ããããã«äœ¿çšãããŸãã[condition]
: ã¹ããªããå ã®ã¹ã¿ã€ã«ããã€é©çšããããæ±ºå®ããã¡ãã£ã¢ã¯ãšãªãŸãã¯CSSã®æ¡ä»¶ã§ãã[CSS rules]
: æ¡ä»¶ãæºããããå Žåã«é©çšãããæšæºçãªCSSã«ãŒã«ã§ãã
äŸïŒç»é¢ãµã€ãºã«å¿ããã¹ã¿ã€ã«ã®åå²
以äžã¯ã@split
ã䜿çšããŠç»é¢ãµã€ãºã«åºã¥ããŠç°ãªãã¹ã¿ã€ã«ãèªã¿èŸŒãå®è·µçãªäŸã§ãïŒ
@split responsive-layout {
screen and (max-width: 768px): {
.container {
width: 100%;
padding: 10px;
}
h1 {
font-size: 2em;
}
}
screen and (min-width: 769px): {
.container {
width: 960px;
padding: 20px;
}
h1 {
font-size: 3em;
}
}
}
ãã®äŸã§ã¯ãresponsive-layout
ãšããååã®ã¹ããªãããå®çŸ©ããŠããŸããããã«ã¯ç»é¢å¹
ã«åºã¥ã2ã€ã®æ¡ä»¶ãå«ãŸããŠããŸããç»é¢å¹
ã768px以äžã®å Žåãã¢ãã€ã«ããã€ã¹çšã®ã¹ã¿ã€ã«ãé©çšãããŸããç»é¢å¹
ã768pxãã倧ããå Žåããã倧ããªç»é¢çšã®ã¹ã¿ã€ã«ãé©çšãããŸãã
äŸïŒå°å·ã¡ãã£ã¢çšã®ã¹ã¿ã€ã«ã®åå²
ããäžã€ã®äžè¬çãªäœ¿çšäŸã¯ãå°å·ã¡ãã£ã¢å°çšã®ã¹ã¿ã€ã«ãåå²ããããšã§ãïŒ
@split print-styles {
print: {
body {
font-size: 12pt;
color: black;
}
.no-print {
display: none;
}
}
}
ããã§ã¯ãprint-styles
ãšããååã®ã¹ããªãããå®çŸ©ããŠããŸããprint
ãšããæ¡ä»¶ã«ããããããã®ã¹ã¿ã€ã«ã¯ããŒãžãå°å·ããããšãã«ã®ã¿é©çšãããããã«ãªããŸããno-print
ã¯ã©ã¹ãæã€èŠçŽ ãé衚瀺ã«ããå°å·æã®å¯èªæ§ãé«ããããã«ãã©ã³ããµã€ãºã調æŽã§ããŸãã
@split
ã䜿çšããã¡ãªãã
@split
ã¢ããã«ãŒã«ã䜿çšããããšã«ã¯ãWebããã©ãŒãã³ã¹ãšä¿å®æ§ã«ãããŠããã€ãã®å©ç¹ããããŸãïŒ
- åæèªã¿èŸŒã¿æéã®æ¹åïŒ åæã¬ã³ããªã³ã°ã«å¿ èŠãªCSSã®ã¿ãèªã¿èŸŒãããšã§ããã©ãŠã¶ã¯ããŒãžãããéã衚瀺ã§ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžããŸãã
- CSSãµã€ãºã®åæžïŒ 倧ããªCSSãã¡ã€ã«ãããå°ãããç®çã«ç¹åãããã£ã³ã¯ã«åå²ããããšã§ããã©ãŠã¶ãããŠã³ããŒãããå¿ èŠã®ããCSSã®å šäœçãªãµã€ãºãæžå°ããŸãã
- ãã£ãã·ã¥å¹çã®åäžïŒ å°ããªCSSãã¡ã€ã«ã¯ãã©ãŠã¶ã«ãã£ãŠããå¹ççã«ãã£ãã·ã¥ããããã®åŸã®ããŒãžèªã¿èŸŒã¿ãé«éã«ãªããŸãã
- ä¿å®æ§ã®åäžïŒ CSSãã¢ãžã¥ãŒã«åããããšã§ãã¹ã¿ã€ã«ã®ç®¡çãšæŽæ°ã容æã«ãªããŸãããªããªãã1ã€ã®ã¹ããªãããžã®å€æŽãã¹ã¿ã€ã«ã·ãŒãã®ä»ã®éšåã«åœ±é¿ãäžããå¯èœæ§ãäœããªãããã§ãã
- æ¡ä»¶ä»ãèªã¿èŸŒã¿ïŒ
@split
ã䜿çšãããšãç»é¢ãµã€ãºãã¡ãã£ã¢ã¿ã€ããããã«ã¯ãŠãŒã¶ãŒã®å¥œã¿ãªã©ã®ç¹å®ã®æ¡ä»¶ã«åºã¥ããŠCSSãèªã¿èŸŒãããšãã§ããŸãã - ãã€ãã£ããªãã©ãŠã¶ãµããŒãïŒå¯èœæ§ïŒïŒ ããªããã»ããµããŒã¹ã®ãœãªã¥ãŒã·ã§ã³ãšã¯ç°ãªãã
@split
ã¯ãã€ãã£ãã®CSSæ©èœãšãªãããšãç®æããŠãããããåªããããã©ãŒãã³ã¹ãšã·ã³ãã«ãªã¯ãŒã¯ãããŒãæäŸããå¯èœæ§ããããŸãã
@split
ã®ãŠãŒã¹ã±ãŒã¹
@split
ã¢ããã«ãŒã«ã¯ãWebããã©ãŒãã³ã¹ãæé©åããããã«ããŸããŸãªã·ããªãªã§é©çšã§ããŸãïŒ
- ã¬ã¹ãã³ã·ããã¶ã€ã³ïŒ ç»é¢ãµã€ãºãããã€ã¹ã®åãã«åºã¥ããŠç°ãªãã¹ã¿ã€ã«ãèªã¿èŸŒã¿ãŸãã
- å°å·ã¹ã¿ã€ã«ïŒ äžèŠãªèŠçŽ ãé衚瀺ã«ããå¯èªæ§ãæé©åãããªã©ãå°å·ã¡ãã£ã¢çšã®ç¹å®ã®ã¹ã¿ã€ã«ãå®çŸ©ããŸãã
- ããŒãåãæ¿ãïŒ ãŠãŒã¶ãŒã®å¥œã¿ïŒäŸïŒã©ã€ãã¢ãŒã察ããŒã¯ã¢ãŒãïŒã«åºã¥ããŠç°ãªãCSSããŒããèªã¿èŸŒã¿ãŸãã
- A/Bãã¹ãïŒ ããŸããŸãªãã¶ã€ã³èŠçŽ ã®A/Bãã¹ãçšã«ãç°ãªãCSSããªãšãŒã·ã§ã³ãèªã¿èŸŒã¿ãŸãã
- ãã£ãŒãã£ãŒãã©ã°ïŒ ãã£ãŒãã£ãŒãã©ã°ã«åºã¥ããŠãç¹å®ã®æ©èœã®CSSãæ¡ä»¶ä»ãã§èªã¿èŸŒã¿ãŸãã
- åœéåïŒi18nïŒïŒ ãŠãŒã¶ãŒã®èšèªãå°åã«åºã¥ããŠç°ãªãCSSã¹ã¿ã€ã«ãèªã¿èŸŒã¿ãŸããäŸãã°ãå³ããå·Šãžèšè¿°ããèšèªã«ã¯ãç°ãªããã©ã³ãã¹ã¿ã€ã«ãã¬ã€ã¢ãŠã調æŽãå¿ èŠã«ãªãå ŽåããããŸãã
- ã¢ã¯ã»ã·ããªãã£ïŒ ã³ã³ãã©ã¹ãã®åäžããã©ã³ããµã€ãºã®æ¡å€§ãªã©ãéããã®ãããŠãŒã¶ãŒåãã«æé©åãããCSSãèªã¿èŸŒã¿ãŸãã
æ¢åã®CSSã³ãŒãå岿è¡ãšã®æ¯èŒ
çŸåšãCSSã®ã³ãŒãåå²ã¯äž»ã«ããªããã»ããµãšãã«ãããŒã«ã«ãã£ãŠå®çŸãããŠããŸãã以äžã¯ã@split
ãšãããã®æ¢åæè¡ãšã®æ¯èŒã§ãïŒ
ããªããã»ããµïŒSass, Less, StylusïŒ
- é·æïŒ æçããŠããåºãæ¡çšãããŠããã倿°ãmixinããã¹ããªã©ã®æ©èœãæäŸããŸãã
- çæïŒ ã³ã³ãã€ã«ã¹ããããå¿ èŠãè€éããå¢ãå¯èœæ§ããããã³ãŒãåå²ã®ããã«ã¯ãã°ãã°ãã«ãããŒã«ã«äŸåããŸãã
ãã«ãããŒã«ïŒWebpack, ParcelïŒ
- é·æïŒ åŒ·åãªã³ãŒãå岿©èœãè€éãªäŸåé¢ä¿ãåŠçã§ããã¢ã»ãããæé©åããŸãã
- çæïŒ èšå®ãè€éã«ãªãå¯èœæ§ãããããã«ãããã»ã¹ãå¿ èŠãéçºã¯ãŒã¯ãããŒã«ãªãŒããŒãããã远å ããŸãã
@split
- é·æïŒ ãã€ãã£ããªãã©ãŠã¶ãµããŒãïŒå¯èœæ§ïŒãããã·ã³ãã«ãªã¯ãŒã¯ãããŒããã«ãããã»ã¹äžèŠãããè¯ãããã©ãŒãã³ã¹ã®å¯èœæ§ã
- çæïŒ ãŸã åºãå®è£ ãããŠããªããããªããã»ããµããã«ãããŒã«ãšæ¯èŒããŠæ©èœã»ãããéå®çã
@split
ã¢ããã«ãŒã«ã¯ãCSSã³ãŒãåå²ã«å¯ŸããŠããåçåããããã€ãã£ããªã¢ãããŒããæäŸããå Žåã«ãã£ãŠã¯è€éãªãã«ãããŒã«ãããªããã»ããµã®å¿
èŠæ§ãæé€ããããšãç®æããŠããŸãããããã@split
ããããã®ããŒã«ãå®å
šã«çœ®ãæããããšãæå³ããŠããããã§ã¯ãªãç¹ã«æ³šæããããšãéèŠã§ãããããã®ããŒã«ã¯ã@split
ã察å¿ããŠããªã倿°ç®¡çãã¢ã»ããæé©åã®ãããªäŸ¡å€ããæ©èœãäŸç¶ãšããŠæäŸããŠããŸãã
èæ ®äºé ãšãã¹ããã©ã¯ãã£ã¹
@split
ã¢ããã«ãŒã«ã¯CSSã³ãŒãåå²ãžã®ææãªã¢ãããŒããæäŸããŸãããå¿ã«çããŠããã¹ãããã€ãã®èæ
®äºé
ãšãã¹ããã©ã¯ãã£ã¹ããããŸãïŒ
- ãã©ãŠã¶ãµããŒãïŒ æ¬çš¿å·çæç¹ã§ã¯ã
@split
ã¯ãŸã ãã¹ãŠã®ãã©ãŠã¶ã§åºãå®è£ ãããŠããŸãããæ¬çªç°å¢ã§äœ¿çšããåã«ããã©ãŠã¶ã®äºææ§ã確èªããããšãäžå¯æ¬ ã§ããå€ããã©ãŠã¶ã®ããã«ãã©ãŒã«ããã¯ã¡ã«ããºã ãæäŸããå¿ èŠããããããããŸããã - ããã©ãŒãã³ã¹ãã¹ãïŒ
@split
ãå®è£ ããåŸã¯ãå¿ ããŠã§ããµã€ãã®ããã©ãŒãã³ã¹ããã¹ãããå®éã«èªã¿èŸŒã¿æéãæ¹åãããŠããããšã確èªããŠãã ããããã©ãŠã¶ã®éçºè ããŒã«ã䜿çšããŠããããã¯ãŒã¯ãªã¯ãšã¹ããšã¬ã³ããªã³ã°ããã©ãŒãã³ã¹ãåæããŸãã - ç²åºŠïŒ ã¹ããªããã®é©åãªç²åºŠãéžæããŠãã ãããã¹ããªããã现ãããããšéå°ãªHTTPãªã¯ãšã¹ãã«ã€ãªããå¯èœæ§ããããéã«ã¹ããªãããå°ãªããããšååãªããã©ãŒãã³ã¹äžã®å©ç¹ãåŸãããªãå ŽåããããŸãã
- ä¿å®æ§ïŒ CSSãçè§£ããããä¿å®ããããæ¹æ³ã§æŽçããŠãã ãããã¹ããªãããšæ¡ä»¶ã«ã¯ãæç¢ºã§èª¬æçãªååã䜿çšããŸãã
- ãã©ãŒã«ããã¯æŠç¥ïŒ
@split
ããµããŒãããŠããªããã©ãŠã¶ã®ããã«ãã©ãŒã«ããã¯æŠç¥ãå®è£ ããŠãã ãããããã«ã¯ãåŸæ¥ã®CSSæè¡ãããªãã£ã«ã䜿çšããããšãå«ãŸããå ŽåããããŸãã - ä»ã®æé©åæè¡ãšã®çµã¿åããïŒ
@split
ã¯ããºã«ã®äžçã«ãããŸãããæå€§ã®å¹æãåŸãããã«ãCSSã®å§çž®ãç»åã®æé©åããã©ãŠã¶ã®ãã£ãã·ã¥ãªã©ãä»ã®ããã©ãŒãã³ã¹æé©åæè¡ãšçµã¿åãããŠãã ããã
CSSã³ãŒãåå²ã®æªæ¥
@split
ã¢ããã«ãŒã«ã¯ãCSSã®é²åãšWebããã©ãŒãã³ã¹æé©åã«ãããéèŠãªäžæ©ã衚ããŠããŸãã@split
ã®ãã©ãŠã¶ãµããŒããæ¡å€§ããã«ã€ããŠãããéããããå¿çæ§ã®é«ããŠã§ããµã€ããæ§ç¯ããããã®æšæºçãªææ³ã«ãªãå¯èœæ§ããããŸããããŸããŸãªèŠå ã«åºã¥ããŠCSSãæ¡ä»¶ä»ãã§èªã¿èŸŒãæ©èœã¯ãé«åºŠã«ã«ã¹ã¿ãã€ãºãããæé©åããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåµåºããããã®æ°ããªå¯èœæ§ãéããŸãã
ããã«ã@split
ã®éçºã¯ãCSSãããé«åºŠãªæ©èœã§åŒ·åããããšããç¶ç¶çãªåãçµã¿ãæµ®ã圫ãã«ããéçºè
ãJavaScriptããŒã¹ã®ãœãªã¥ãŒã·ã§ã³ã®ã¿ã«äŸåããããšãªããæŽç·Žãããé«ããã©ãŒãã³ã¹ã®Webã¢ããªã±ãŒã·ã§ã³ãäœæã§ããããã«ããŸããçŸä»£ã®Webéçºã®èª²é¡ã«å¯Ÿå¿ããCSSã®ãããªã驿°ãæåŸ
ãããè€éã§é
åçãªWebãšã¯ã¹ããªãšã³ã¹ã®æ§ç¯ãšç¶æããã容æã«ãªãã§ãããã
çµè«
CSSã®@split
ã¢ããã«ãŒã«ã¯ãWebããã©ãŒãã³ã¹ã倧å¹
ã«åäžãããããšãã§ãããã³ãŒãåå²ã®ããã®åŒ·åãªããŒã«ã§ããCSSãããå°ãããæ¡ä»¶ä»ãã§èªã¿èŸŒãŸãããã£ã³ã¯ã«åå²ããããšã§ãéçºè
ã¯åæèªã¿èŸŒã¿æéãççž®ãããã£ãã·ã¥ã匷åããä¿å®æ§ãåäžãããããšãã§ããŸãããã©ãŠã¶ã®ãµããŒãã¯ãŸã é²åã®éäžã§ããã@split
ã¯CSSã³ãŒãåå²ã®ææãªæªæ¥ã象城ããWebéçºã®ç¶ç¶çãªé²åã®äžç«¯ãå£éèŠããŠãããŸããWebãããéããããå¿çæ§ã®é«ããšã¯ã¹ããªãšã³ã¹ãæ±ãç¶ããäžã§ã@split
ã®ãããªæè¡ã¯ãäžçäžã®ãŠãŒã¶ãŒãåã°ãã髿§èœãªãŠã§ããµã€ããæ§ç¯ããããã«ãŸããŸãäžå¯æ¬ ã«ãªãã§ããããCSSã®ææ°ååãåžžã«ææ¡ãã@split
ã詊ããŠãããªãã®Webãããžã§ã¯ããæé©åããããã®ãã®æœåšèœåãè§£ãæŸã¡ãŸãããã