CSS Regionã«ãŒã«ã®æŽ»çšã«ãããé«åºŠãªã³ã³ãã³ããããŒå¶åŸ¡ãã¬ã¹ãã³ã·ããã¶ã€ã³ããããŠææ°ã®Webéçºã«ãããåçã¬ã€ã¢ãŠããå®çŸããŸããããCSS Regionsã§éèªã®ãããªã¬ã€ã¢ãŠããäœæããæ¹æ³ãåŠã³ãŸãããã
CSS Regionã«ãŒã«ïŒé«åºŠãªã¬ã€ã¢ãŠãã®ããã®ã³ã³ãã³ããããŒå¶åŸ¡
Webéçºãåžžã«é²åããäžã§ãèŠèŠçã«é åçã§é åçãªã¬ã€ã¢ãŠããäœæããããšãäžå¯æ¬ ã§ããFlexboxãGridã®ãããªåŸæ¥ã®CSSã¬ã€ã¢ãŠãæè¡ã¯ãã³ã³ãã³ããæ§é åããããã®åŒ·åãªããŒã«ãæäŸããŠããŸãããéèªãæ°èã§èŠããããããªè€éã§éç·åœ¢ãªãã¶ã€ã³ãå®çŸããå Žåã«ã¯ãååã§ãªãå ŽåããããŸããããã§CSS Regionsã®åºçªãšãªããè€æ°ã®ã³ã³ããéã§ã³ã³ãã³ããããŒãå¶åŸ¡ããããã®å ç¢ãªã¡ã«ããºã ãæäŸããéçºè ãæŽç·Žãããåçãªã¬ã€ã¢ãŠããäœæã§ããããã«ããŸãã
CSS Regionsã®çè§£
CSS Regionsã¯ãCSS3仿§ã®äžéšã§ããïŒãã ããæ®éçã«å®è£ ãããŠããããã§ã¯ãããŸããïŒãååä»ããããŒãå®çŸ©ããç¹å®ã®é åã«ã³ã³ãã³ããèªå°ããæ¹æ³ãæäŸããŸããããŸããŸãªåœ¢ç¶ãšãµã€ãºã®è€æ°ã®ã³ã³ããã«è¡šç€ºãããé·ãèšäºããããšããŸããCSS Regionsã䜿çšãããšããŸãã«ãããè¡ãããšãã§ãããããã®ã³ã³ããéã§ã³ã³ãã³ããã·ãŒã ã¬ã¹ã«ãªãããŒãããŸãšãŸãã®ããèŠèŠçã«é åçãªãšã¯ã¹ããªãšã³ã¹ãäœæã§ããŸãã
äžæ žãšãªãæŠå¿µã¯ã2ã€ã®äž»èŠã³ã³ããŒãã³ããäžå¿ã«å±éããŸãã
- ååä»ããããŒïŒ ãããã¯ãã³ã³ãã³ããä¿æããååä»ãã³ã³ããã§ãããããã¯ãæºããããã®ãåŸ ã£ãŠãããã±ãã®ãããªãã®ã§ããååä»ããããŒã¯ãã³ã³ãã³ãã®åäžã®ãœãŒã¹ãšããŠæ©èœããŸãã
- ãªãŒãžã§ã³ïŒ ãããã¯ãååä»ããããŒããã®ã³ã³ãã³ããèŠèŠçã«è¡šç€ºããã³ã³ããã§ãããããã®ãªãŒãžã§ã³ã¯ãåµé çã§æè»ãªã¬ã€ã¢ãŠããå¯èœã«ããããã«ãåå¥ã«é 眮ããã³ã¹ã¿ã€ã«èšå®ã§ããŸãã
æ®å¿µãªãããCSS Regionsã®æŠå¿µã¯åŒ·åã§ããããã©ãŠã¶ã®ãµããŒãã¯éãããŠããŸããæåã¯äžéšã®ãã©ãŠã¶ã§å®è£ ãããŸãããããã®åŸå»æ¢ãããããç©æ¥µçã«ã¡ã³ããã³ã¹ãããŠããŸãããããããCSS Regionsã®èåŸã«ããååãçè§£ããããšã§ãä»ã®ã¬ã€ã¢ãŠãã®èª²é¡ã«ã©ã®ããã«åãçµãããç¥ãããããšãã§ããããªãã£ã«ãŸãã¯å°æ¥ã®ã¬ã€ã¢ãŠãæè¡ãåºæ¿ããå¯èœæ§ããããŸãã
CSS Regionsã®ä»çµã¿ïŒçè«äžïŒ
ãã©ãŠã¶ã®ãµããŒãã«çŸåšã®å¶éãããããšã念é ã«çœ®ããŠãCSS Regionsã*ã©ã®ããã«*çè«çã«æ©èœããããèŠãŠã¿ãŸããããããã»ã¹ã«ã¯éåžžãæ¬¡ã®æé ãå«ãŸããŸãã
- ååä»ããããŒãå®çŸ©ããïŒ ã³ã³ãã³ãããããŒããèŠçŽ ã«`flow-into`ããããã£ã䜿çšããŠãã³ã³ãã³ãã®ãããŒã«ååãå²ãåœãŠãããšããå§ããŸããäŸïŒ
.content { flow-into: articleFlow; }
- ãªãŒãžã§ã³ãäœæããïŒ æ¬¡ã«ãã³ã³ãã³ãã衚瀺ãããªãŒãžã§ã³ãå®çŸ©ããŸãããããã®ãªãŒãžã§ã³ã¯éåžžã``èŠçŽ ãªã©ã®ãããã¯ã¬ãã«èŠçŽ ã§ãã`flow-from`ããããã£ã䜿çšããŠããããã®ãªãŒãžã§ã³ãååä»ããããŒã«é¢é£ä»ããŸãã
.region1 { flow-from: articleFlow; width: 300px; height: 200px; } .region2 { flow-from: articleFlow; width: 400px; height: 300px; }
- ãªãŒãžã§ã³ã®ã¹ã¿ã€ã«ãèšå®ããïŒ `width`ã`height`ã`background-color`ã`border`ãªã©ã®æšæºã®CSSããããã£ã䜿çšããŠãåãªãŒãžã§ã³ãåå¥ã«ã¹ã¿ã€ã«èšå®ã§ããŸãã
`flow-into: articleFlow`ãæã€èŠçŽ ããã®ã³ã³ãã³ãã¯ã`.region1`ããã³`.region2`èŠçŽ ã«èªåçã«æµã蟌ã¿ãé çªã«åããããŸããã³ã³ãã³ãããªãŒãžã§ã³ã§å©çšå¯èœãªã¹ããŒã¹ãè¶ ããå ŽåãåãæšãŠããã`region-fragment`ã®ãããªCSSããããã£ã䜿çšããŠããªãŒãžã§ã³éã§ã³ã³ãã³ããã©ã®ããã«åå²ãããããå¶åŸ¡ã§ããŸãã
ãªãŒãžã§ã³ã®ããã®äž»èŠãªCSSããããã£
ãªãŒãžã§ã³ã«é¢é£ä»ããããäžå¯æ¬ ãªCSSããããã£ã®å èš³ãæ¬¡ã«ç€ºããŸãã
- `flow-into`ïŒ ãã®ããããã£ã¯ãã³ã³ãã³ããååä»ããããŒã«å²ãåœãŠãŸãããªãŒãžã§ã³å šäœã«åæ£ããã³ã³ãã³ããå«ãèŠçŽ ã«é©çšãããŸããå€ã¯ããããŒã«ä»ããååã§ãã
- `flow-from`ïŒ ãã®ããããã£ã¯ãååä»ããããŒã®ã³ã³ãã³ããç¹å®ã®ãªãŒãžã§ã³ã«èªå°ããŸãããªãŒãžã§ã³èŠçŽ ã«é©çšãããŸããå€ã¯ã`flow-into`ããããã£ã§äœ¿çšãããååãšäžèŽããå¿ èŠããããŸãã
- `region-fragment`ïŒ ãã®ããããã£ã¯ããªãŒãžã§ã³ããªãŒããŒãããŒãããšãã«ã³ã³ãã³ããã©ã®ããã«ãã©ã°ã¡ã³ãåãããããå¶åŸ¡ããŸããå¯èœãªå€ã«ã¯ã`auto`ã`break`ãããã³`discard`ããããŸãã`auto`ã¯ããã©ã«ãã§ããããã©ãŠã¶ãã³ã³ãã³ããã©ãã§åå²ããããæ±ºå®ã§ããããã«ããŸãã`break`ã¯ãæãè¿ãæå¹ãªãã¬ãŒã¯ãã€ã³ãïŒåèªéãŸãã¯è¡éãªã©ïŒã§ãã¬ãŒã¯ã匷å¶ããŸãã`discard`ã¯ããªãŒããŒãããŒããŠããã³ã³ãã³ããé衚瀺ã«ããŸãã
- `getRegions()`ïŒ ãã®Javascriptã¡ãœããã¯ã*å©çšå¯èœãªå Žå*ãç¹å®ã®ååä»ããããŒã«é¢é£ä»ãããããªãŒãžã§ã³ã®ãªã¹ããååŸã§ããŸããããã¯ãã¬ã€ã¢ãŠãã®åçãªæäœã«äœ¿çšã§ããŸãããã ãããã©ãŠã¶ã®ãµããŒããéãããŠããããããã®ä¿¡é Œæ§ã¯çåèŠãããŸãã
å®çšçãªäŸïŒæŠå¿µçïŒ
ãã©ãŠã¶ã®ãµããŒãã«ãããCSS Regionsãæ¬çªç°å¢ã§ç¢ºå®ã«äœ¿çšããããšã¯ã§ããŸãããããã®å¯èœæ§ã瀺ãããã«ããã€ãã®ãŠãŒã¹ã±ãŒã¹ãæ³åããŠã¿ãŸãããã
éèªã¬ã€ã¢ãŠã
èšäºãç»åããµã€ãããŒãããã³ãã®ä»ã®èŠçŽ ã®åšããæµããéèªã¹ã¿ã€ã«ã®ã¬ã€ã¢ãŠããæ³åããŠãã ãããèšäºã³ã³ãã³ãã«ååä»ããããŒãå®çŸ©ãããããã®èŠçŽ ã«å¯Ÿå¿ããããã«ããŸããŸãªåœ¢ç¶ãšãµã€ãºã®ãªãŒãžã§ã³ãäœæã§ããŸããããã¹ãã¯é害ç©ã®åšããèªåçã«ãªãããŒããèŠèŠçã«åçã§é åçãªã¬ã€ã¢ãŠããäœæããŸãã
ã¬ã¹ãã³ã·ããªèšäºã®ãã¬ãŒã³ããŒã·ã§ã³
ã¬ã¹ãã³ã·ããã¶ã€ã³ã§ã¯ãç»é¢ãµã€ãºã«åºã¥ããŠèšäºã®ã¬ã€ã¢ãŠãã倿Žãããå ŽåããããŸããCSS Regionsã䜿çšãããšãããŸããŸãªç»é¢ãµã€ãºã«å¯ŸããŠããŸããŸãªãªãŒãžã§ã³ã»ãããå®çŸ©ã§ããŸããç»é¢ãµã€ãºã倿Žããããšãã³ã³ãã³ãã¯å©çšå¯èœãªã¹ããŒã¹ã«åãããŠé©åãªãªãŒãžã§ã³ã«èªåçã«ãªãããŒããŸãã
ã€ã³ã¿ã©ã¯ãã£ããªã¹ããŒãªãŒããªã³ã°
ã€ã³ã¿ã©ã¯ãã£ããªã¹ããŒãªãŒããªã³ã°ã®å ŽåãCSS Regionsã䜿çšããŠéç·åœ¢ãªãã©ãã£ããäœæã§ããŸãããŠãŒã¶ãŒãã³ã³ãã³ããæäœãããšãã¹ããŒãªãŒã¯ããŸããŸãªãªãŒãžã§ã³ã«åå²ãããŠããŒã¯ã§ããŒãœãã©ã€ãºããããšã¯ã¹ããªãšã³ã¹ãäœæã§ããŸãã
å¶éäºé ãšä»£æ¿ææ®µ
åè¿°ã®ããã«ãCSS Regionsã®äž»ãªå¶éäºé ã¯ãåºç¯å²ã«ããããã©ãŠã¶ã®ãµããŒãããªãããšã§ãã仿§ã¯ãã°ããåããååšããŠããŸããããã©ãŠã¶ãã³ããŒã«ãã£ãŠåºãæ¡çšãããŠããŸããããããã£ãŠãæ¬çªWebãµã€ãã«CSS Regionsã®ã¿ãåç¬ã§äœ¿çšããããšã¯ãçŸåšæšå¥šãããŠããŸããã
ãã ããåæ§ã®çµæãéæã§ãã代æ¿ã¢ãããŒããããã€ããããŸãããã ããããŸããŸãªçšåºŠã®è€éãããããŸãã
- JavaScriptããŒã¹ã®ãœãªã¥ãŒã·ã§ã³ïŒ ããã€ãã®JavaScriptã©ã€ãã©ãªãšãã¬ãŒã ã¯ãŒã¯ã¯ãåæ§ã®ã³ã³ãã³ããªãããŒæ©èœãæäŸããŸãããããã®ãœãªã¥ãŒã·ã§ã³ã«ã¯ãåã³ã³ããã§å©çšå¯èœãªã¹ããŒã¹ãèšç®ããããã«å¿ããŠã³ã³ãã³ããæåã§åæ£ãããããšããããããŸãããã®ã¢ãããŒãã¯ãå®è£ ãããè€éã«ãªãå¯èœæ§ããããŸãããããåªããå¶åŸ¡ãšæè»æ§ãæäŸããŸãã
- CSS Gridããã³FlexboxïŒ CSS Regionsã«çŽæ¥çžåœãããã®ã§ã¯ãããŸããããCSS Gridããã³Flexboxã䜿çšããŠãè€æ°ã®åãšæè»ãªã³ã³ãã³ãé 眮ãåããæŽç·Žãããã¬ã€ã¢ãŠããäœæã§ããŸãããããã®ææ³ãã¡ãã£ã¢ã¯ãšãªãšçµã¿åãããããšã§ãããŸããŸãªç»é¢ãµã€ãºã«å¯Ÿå¿ããã¬ã¹ãã³ã·ããã¶ã€ã³ãå®çŸã§ããŸãã
- column-countããããã£ïŒ `column-count` CSSããããã£ã¯ããã¹ãŠã®äž»èŠãªãã©ãŠã¶ã§ãµããŒããããŠããŸããã³ã³ãã³ãã®ãã¬ãŒã¯ãã€ã³ããå®å šã«å¶åŸ¡ã§ããããã§ã¯ãããŸããããã³ã³ãã³ããè€æ°ã®åã«æµã蟌ãéèªã¹ã¿ã€ã«ã®ã¬ã€ã¢ãŠããäœæããããã«äœ¿çšã§ããŸãã`column-gap`ã䜿çšããŠåéã«ééã远å ãã`column-rule`ã䜿çšããŠèŠèŠçãªã»ãã¬ãŒã¿ãŒã远å ã§ããŸãã
CSSã¬ã€ã¢ãŠãã®å°æ¥
CSS Regionsã¯ãçŸæç¹ã§ã¯æ¬çªWebãµã€ãã®æå¹ãªãªãã·ã§ã³ã§ã¯ãªããããããŸããããã³ã³ãã³ããããŒå¶åŸ¡ã®æ ¹åºã«ããæŠå¿µã¯äŸç¶ãšããŠé¢é£ããŠããŸããWebãé²åãç¶ããã«ã€ããŠãæ¢åã®ã¢ãããŒãã®å¶éã«å¯ŸåŠãããæ°ãã驿°çãªã¬ã€ã¢ãŠãæè¡ãç»å Žããããšãäºæ³ãããŸããCSS Regionsã®èåŸã«ããã¢ã€ãã¢ã¯ãå°æ¥ã®CSS仿§ã§åæ€èšããã³çµã¿èŸŒãŸããå¯èœæ§ããããŸãã
é«åºŠãªã¬ã€ã¢ãŠããå®è£ ããéã®ã°ããŒãã«ãªèæ ®äºé
ç¹ã«ã°ããŒãã«ãªãªãŒãã£ãšã³ã¹åãã«é«åºŠãªã¬ã€ã¢ãŠããèšèšããå Žåã¯ã以äžãèæ ®ããããšãéèŠã§ãã
- èšèªãµããŒãïŒ å³ããå·Šãžã®ããã¹ãæ¹åã®èšèªïŒã¢ã©ãã¢èªãããã©ã€èªãªã©ïŒãå«ãããŸããŸãªèšèªã«å¯Ÿå¿ã§ããã¬ã€ã¢ãŠãã§ããããšã確èªããŠãã ãããããã¹ãã®æ¹åã«é¢ä¿ãªãé©åãªã¬ã€ã¢ãŠãåäœãä¿èšŒããããã«ãè«çããããã£ïŒ`margin-inline-start`ãªã©ã`margin-left`ã®ä»£ããã«ïŒã®äœ¿çšãæ€èšããŠãã ããã
- ãã©ã³ãã¬ã³ããªã³ã°ïŒ ããŸããŸãªãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšãã©ãŠã¶ã¯ããã©ã³ããç°ãªãæ¹æ³ã§ã¬ã³ããªã³ã°ããå ŽåããããŸããããŸããŸãªãã©ãããã©ãŒã ã§ã¬ã€ã¢ãŠãããã¹ãããŠãäžè²«ããå€èгã確ä¿ããŠãã ãããäžè²«ããã¿ã€ãã°ã©ãã£ãšã¯ã¹ããªãšã³ã¹ãæäŸããããã«ãWebãã©ã³ãã®äœ¿çšãæ€èšããŠãã ããã
- ã¢ã¯ã»ã·ããªãã£ïŒ ã¬ã€ã¢ãŠããé害ã®ãããŠãŒã¶ãŒã«ã¢ã¯ã»ã¹å¯èœã§ããããšã確èªããŠãã ãããç»åã®ä»£æ¿ããã¹ããæäŸããã»ãã³ãã£ãã¯HTMLèŠçŽ ã䜿çšããååãªè²ã®ã³ã³ãã©ã¹ãã確ä¿ããŸããARIA屿§ã䜿çšããŠãè€éãªã¬ã€ã¢ãŠãã®ã¢ã¯ã»ã·ããªãã£ãåäžãããŸãã
- ããã©ãŒãã³ã¹ïŒ è€éãªã¬ã€ã¢ãŠãã¯ãWebãµã€ãã®ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸããCSSããã³JavaScriptã³ãŒããæé©åããHTTPãªã¯ãšã¹ããæå°éã«æãããã£ãã·ã¥æè¡ã䜿çšããŠèªã¿èŸŒã¿æéãæ¹åããŸããGoogle PageSpeed Insightsãªã©ã®ããŒã«ã䜿çšããŠãããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããŸãã
- ãã¹ãïŒ ããŸããŸãªãã©ãŠã¶ãããã€ã¹ãããã³ç»é¢ãµã€ãºã§ã¬ã€ã¢ãŠãã培åºçã«ãã¹ãããŠãæåŸ ã©ããã«æ©èœããããšã確èªããŸããèªåãã¹ãããŒã«ã䜿çšããŠãååž°ãæ€åºããäžè²«ããåäœãä¿èšŒããŸãã
çµè«
CSS Regionsã¯ããã©ãŠã¶ã®ãµããŒããéãããŠããã«ãããããããã³ã³ãã³ããããŒå¶åŸ¡ãžã®é åçãªã¢ãããŒãã衚ããŠããŸããCSS Regionsã®èåŸã«ããååãçè§£ããããšã§ãã¬ã€ã¢ãŠããã¶ã€ã³ã«ã€ããŠåµé çã«èããè€éã§åçãªã¬ã€ã¢ãŠããå®çŸããããã®ä»£æ¿æè¡ãæ¢çŽ¢ããããšãã§ããŸããCSSã¬ã€ã¢ãŠãæè¡ã®é²åãç¶ããç¶æ³ã«ç®ãå ãããŠããããšã§ãäžæ©å ãè¡ããäžçäžã®ãŠãŒã¶ãŒã«èŠèŠçã«çŽ æŽããããé åçãªWebãšã¯ã¹ããªãšã³ã¹ãäœæã§ããŸãããªãŒãžã§ã³ã¯ãŸã å®çšåãããŠããŸããããããããæ¢æ±ããæŠå¿µã¯ãå°æ¥ã®ã¬ã€ã¢ãŠããã©ãã€ã ã圢æããäžã§åŒãç¶ã䟡å€ããããŸãã