ã¯ããã«
ããã«ã¡ã¯ïŒããããŸã§ãïŒ
ã¿ãªããŸã¯æšªäžŠã³ã¬ã€ã¢ãŠãã¯ã©ã®ããã«å®è£
ããŠããŸãã§ããããïŒ
ç§ã¯Flexboxãå€çšããŠããã®ã§ãããæè¿Grid Layoutã«è§Šããæ©äŒãããã詊ãããšããããã䟿å©ã ã£ãã®ã§ãä»åŸèªåã§ãèŠçŽããããåå¿é²ãšããŠãŸãšããŠã¿ãŸããïŒ
Grid Layoutã«ã€ããŠ
ãŸãã¯Gridã«ã€ããŠèª¬æããŠãããŸãã
ç§ã¯è±èªãããŸãåŸæã§ã¯ãªããããããGridãŠãªã«ïŒç¶æ
ã ã£ãã®ã§èª¿ã¹ãŠã¿ãŸããã
ã°ãªããïŒgridïŒãšã¯ãæ ŒåïŒç¶ã®ãã®ïŒãæ¹çŒïŒç¶ã®ãã®ïŒãéé»ç¶²ãé 管網ãªã©ã®æå³ãæã€è±åèªãçŽç·ã瞊暪ã«èŠåæ£ãã䞊ãã å³åœ¢ããã®ãããªæ§é ã®ãã®ããŸãã倿°ã®å¯Ÿè±¡ãç¶²ç®ç¶ã«ç¹ããããããã®ãæå³ããããšãå€ãã
ITçšèªèŸå ž e-words
Gridã¯æ¥æ¬èªã§æ Œåç¶ãæ¹çŒç¶ãšãã£ã瞊暪ã®çŽç·ã§èŠåæ£ããåºåãããŠãããã®ã®ããšã¿ããã§ãã
MDNã§Gridã«ã€ããŠèª¿ã¹ããšããæžãããŠããŸããã
åãšè¡ãå®çŸ©ããæ°Žå¹³ç·ãšåçŽç·ã®éåã亀差ãããã®ã§ããèŠçŽ ãã°ãªããäžã®è¡ãšåã®äžã«é 眮ããããšãã§ããŸãã
MDN Web Docs
Grid Layoutã䜿ãããšã§ãäžç»åã®ããã«å€§ããã®éãèŠçŽ ãæ Œåç¶ã«äžŠã¹ãŠè¡šç€ºããããšãã§ããããã«ãªããŸãã
Grid Layoutã§åºãŠããçšèªãåºæ¬ã®èãæ¹ã¯ãã¡ãã®èšäºãããããããã£ãã®ã§ãåŒçšãããŠããã ããŸãã
å·Šã®å³ãèŠãŠãã ããã衚ãæãããã«ãç·ãåŒããŠãæ Œåç¶ã«ãã¹ç®ãäœããŸããããããã®ç·ã«ã¯çªå·ãæ¯ãããŸããåïŒæšªæ¹åïŒã¯å·Šããå³ãžãè¡ã¯ïŒçžŠæ¹åïŒã¯äžããäžãžããã®ç·ãã©ã€ã³ããã¹ç®ãã»ã«ãåãè¡ããã©ãã¯ãšåŒã³ãŸãã
å³ã®å³ãèŠãŠãã ããããã®ã»ã«ã«åããã圢ã§ãã¢ã€ãã ïŒããããã®åèŠçŽ ïŒã®é åãæ±ºããŠãããŸããå šãŠã®ã¢ã€ãã ããã³ã³ããïŒèŠªèŠçŽ ïŒã§å ã¿ãŸãã
ãCSSãGrid Layout ã䜿ãããªã â ãã®ïŒ åºæ¬
ã§ã¯Gridã䜿çšããäžã§ãã䜿ãããããã£ããŸãšããŠãããããšæããŸãã
grid-template-columns
grid-template-columns
ã¯ã³ã³ããå
ã®åã®ãµã€ãºãé
眮ãæå®ããããã«äœ¿çšãããŸãã
äžèšã®äŸã ãšå·Šã®åãã150pxïŒã¢ã€ãã 1ã4ïŒ
ã250pxïŒã¢ã€ãã 2ã5ïŒ
ã1frïŒã¢ã€ãã 3ã6ïŒ
ã®å¹
ã§è¡šç€ºããŸãã
grid-template-columns: 150px 250px 1fr;
grid-template-rows
grid-template-rows
ã¯ã³ã³ããå
ã®è¡ã®ãµã€ãºãé
眮ãæå®ããããã«äœ¿çšãããŸãã
äžèšã®äŸã ãšäžã®è¡ãã100pxïŒã¢ã€ãã 1ïŒ
ã150pxïŒã¢ã€ãã 2ïŒ
ã1frïŒã¢ã€ãã 3ïŒ
ã®å¹
ã§è¡šç€ºããŸãã
grid-template-rows: 100px 150px 1fr;
frã£ãŠäœïŒ(ããŸã)
ãããŸã§äœåºŠãåäœãšããŠfr
ãåºãŠããŸããããGrid以å€ã«äœ¿ãã¿ã€ãã³ã°ããªãããšãããã1frã«ããšãã°å€§äžå€«ã¿ãããªæãã§äœ¿ã£ãŠãã®ã§è©³ãã調ã¹ãŠã¿ãŸããã
ãŸãfr
ã®æå³ã§ãããåæ°ãæå³ããfraction
ã®ç¥ã¿ããã§ãã
frã䜿çšããããšã§èŠªèŠçŽ ããèŠãåèŠçŽ ã®å€§ãããå²åã§æå®ããããšãã§ããŸãã
ãã®ãããå
ã»ã©èª¬æããgrid-template-columns
ã§1fr 1fr 1fr
ãæå®ãããš1:1:1
ã®å²åã§ã¢ã€ãã ã衚瀺ããããšãã§ããŸãã
grid-columnãgrid-row
å
ã»ã©èª¬æããgrid-template-columns
ãgrid-template-rows
ã¯èŠªèŠçŽ ã®ã³ã³ããã§åã¢ã€ãã ã®é«ããå¹
ãæå®ããŠããŸããããgrid-column
ãgrid-row
ã¯åèŠçŽ ã§ããåã¢ã€ãã ã®éå§ãšçµäºã®äœçœ®ãæå®ããŸããã©ã€ã³ã®æ°åãspan
ãªã©ã䜿ãããšã§æå®ããããšãã§ããŸãã
æåã®æ¹ã«èª¬æãããã®ã©ã€ã³ã®æ°åã䜿ã£ãŠæå®ããŸãã
äŸãã°1è¡ç®å
šäœãèŠããããªã¢ã€ãã ã衚瀺ãããããšãã¯ãã®ããã«æå®ããŸãã
grid-column: 1 / 3;
å·Šã«ã¯ã¢ã€ãã ã®éå§ã©ã€ã³ãå·Šã«ã¯çµäºã©ã€ã³ãæå®ããŸãã
ä»åã®å Žåã ãšéå§ã©ã€ã³ïŒåïŒïŒããçµäºã©ã€ã³ïŒåïŒïŒãŸã§ã«ãªã£ãŠããã®ã§1è¡ç®å
šäœãèŠãã¢ã€ãã ã衚瀺ãããããšãã§ããŸãã
ãŸããspan
ã䜿ãããšã§çµäºã©ã€ã³ã§ã¯ãªããå§ãŸãã®ã©ã€ã³ããäœååã®ã¢ã€ãã ãŸã§ãç¯å²ã«å«ãããã®æå®ãã§ããŸãã
grid-column: 1 / span 2;
äžèšã ãšïŒã€ç®ã®ã¢ã€ãã ãŸã§ãªã®ã§è¡šç€ºãšããŠã¯ãã®åã®grid-column: 1 / 3;
ãšåãã«ãªããŸãã
grid-gap
è¡ãšåã®äœçœãæå®ããããšãã§ããŸãã
grid-gap: 10px;
è¡ãšåã®ééãå¥ã§æå®ãããå Žåã¯column-gap:
ã§åã®äœçœãrow-gap:
ã§è¡ã®äœçœãæå®ããããšãã§ããŸãã
ãŸããgrid-gap:
ã«å€ãäºã€æå®ããããšã§ãäžã€ç®ãè¡ãäºã€ç®ãåã®äœçœã«ãªããŸãã
column-gap: 10px;
repeat()颿°
åããµã€ãºã®ã¢ã€ãã ãç¹°ãè¿ããããšãã¯repeat()
颿°ã䜿çšããããšã§ãç°¡åã«è¡šç€ºããããšãã§ããŸãã
grid-template-columns,grid-template-rows
ã«æå®ããããšãã§ããæåã®åŒæ°ã«ç¹°ãè¿ãåæ°ãäºã€ç®ã®åŒæ°ã«ã¢ã€ãã ã®å¹
ãé ã«ã«ã³ã(,)ã§åºåã£ãŠæå®ããŠãããŸãã
grid-template-columns: repeat(2, 100px);
ãŸããäºã€ç®ã®åŒæ°ã®ã¢ã€ãã å¹ ã¯è€æ°æå®ããããšãã§ããŸããäžã®äŸã ãš100pxãš50pxå¹ ã®ã¢ã€ãã ã2åç¹°ãè¿ãããšãã§ããŸãã
grid-template-columns: repeat(2, 200px 150px);
minmax()颿°
minmax()颿°ã䜿ãããšã§ã¢ã€ãã ã®å¹
ã®æå°å€ãšæå€§å€ã決ããããšãã§ããŸãã
èŠçŽ ãæå®ãããæå°ãµã€ãºãšæå€§ãµã€ãºã®ç¯å²å
ã§èªåçã«ãµã€ãºãå€åããŸãã
display: grid;
grid-template-columns: minmax(100px, 1fr) minmax(200px, 2fr);
ãã®äŸã§ã¯ãgrid-template-columns
ã«minmax()
ã䜿çšããŠãã¢ã€ãã ã®å¹
ãæå®ããŠããŸããå·Šã®åã¯æå°å¹
ã100pxã§ãæå€§å¹
ã¯äœ¿çšå¯èœãªã¹ããŒã¹ã®1å²ãã®å²åãæã¡ãå³ã®åã¯æå°å¹
ã200pxã§ãæå€§å¹
ã¯äœ¿çšå¯èœãªã¹ããŒã¹ã®2å²ãã®å²åãæã¡ãŸãã
minmax()
ã䜿çšããããšã§ãã¢ã€ãã ã®ãµã€ãºãæè»ã«å¶åŸ¡ããã¬ã€ã¢ãŠãã調æŽããããšãã§ããŸãã
auto-fill
auto-fill
ã¯repeatãminmax()ãšäžç·ã«äœ¿çšããããšãå€ãæ°ãããŸãã
auto-fillã䜿ãããšã§ãç»é¢å¹
ãåºããæã«æå®ããã¢ã€ãã ã®å¹
ãšåãã¹ããŒã¹ãã§ãããšãããã«æ°ãã空ã®ã¢ã€ãã ãé
眮ããŸããfillã¯æ¥æ¬èªã§ãæºããããå
å¡«ããããªã®ã§ã¹ããŒã¹ãã§ãããšã©ãã©ã空ã®ã¢ã€ãã ã远å ããŠãããŸãã
ãããã空ã®ã¢ã€ãã ãåå ã§justify-content: center;
ã䜿ã£ãŠãäžå€®æãã«ãªããªãã¿ãããªã®ã§ãããã ãæ³šæããªããšãããªãã§ãã
auto-fit
auto-fit
ã¯å
ã»ã©ã®auto-fillãšã»ãšãã©åãã§ãã
éãã®ã¯ç»é¢ãåºããŠã¹ããŒã¹ãã§ããæã®æåã§ããã¡ãã¯ç©ºã®ã¢ã€ãã ã远å ããŠããã®ã§ã¯ãªããç»é¢å¹
ã«åãããŠã¢ã€ãã ãåŒãå»¶ã°ãããŸãã
subgrid
Gridã䜿ã£ãŠã«ãŒããäœããšãã³ã³ãã³ãå
ã®èŠçŽ ã®é«ããæããã¬ã¿ã¬ã¿ã§ãšãŠãèŠæ ããæªããªã£ãŠããŸããŸãããããªåé¡ã解決ããŠãããã®ãsubgrid
ã§ãã
芪èŠçŽ ã®CSS Gridãç¶æ¿ã§ãããšããæ©èœãæã£ãŠãããsubgrid
ã䜿çšããããšã§JSã䜿ããã«ã³ã³ãã³ãå
ã®èŠçŽ ã®é«ããåãããããšãã§ããŸãã
subgridã䜿ã£ãŠããªãã«ãŒãã¯ãã®ããã«äžã®ããã¹ããªã©ã®åœ±é¿ã§é«ããæã£ãŠããããã¬ã¿ã¬ã¿ã§ããŸãèŠãç®ãè¯ããããŸããã
ããã«subgridãæå®ãããšãã®ããã«ãªããŸãã
ã¿ã€ãã«äžã®ããã¹ãã®éå§äœçœ®ãå
šãŠã®ã«ãŒãã§æã£ãŠããŠsubgridã䜿ã£ãŠããªããã®ããã綺éºã«è¡šç€ºãããããšãã§ããŸãã
å®è£
æ¹æ³ã¯ã«ãŒãã«ãgridãæå®ããsubgridãäžããã ãã§ãã
display: grid;
grid-template-rows: subgrid;
ãŸãšã
ä»åã¯Grid Layoutã«ã€ããŠãŸãšããŸããã
ãŸã å®ç§ã«äœ¿ãããªããŠããªãæãã¯ããŸãããä»åäœ¿ãæ¹ã調ã¹ãŠãŸãšããããšã§ã以åããã¯çè§£ãæ·±ãŸãäžæã䜿ããããã«ãªã£ãã®ã§ããã£ãã§ããä»ãŸã§æšªäžŠã³ã¬ã€ã¢ãŠãã¯Flexboxãå€çšããŠããŸããããæ
£ããŠããŸãã°Grid Layoutã®æ¹ãèªç±åºŠãé«ãã䜿ããããã£ãã®ã§ä»åŸã¯Grid LayoutãããŸã掻çšããŠãããããšæããŸãã
åèãµã€ã
æåŸã«åèã«ãããŠããã ãããµã€ããèŒããŠãããŸããæåŸãŸã§èŠãŠããã ãããããšãããããŸããïŒ
- ãCSSãGrid Layout ã䜿ãããªã
- æšªå¹ ãåºãã£ããšãã®æåãå€ããïŒCSS Gridã®ãauto-fillããšãauto-fitãã®éã
- å ¥ãåã¬ã€ã¢ãŠãããã£ãšäŸ¿å©ã«ïŒCSS Subgridã®äœ¿ãæ¹
- ãCSSãrepeat颿°ã®äœ¿ãæ¹ããã©ãã¯ã®å¹ ã®æå®ãç¹°ãè¿ã!
- CSSã®Subgridãå šãã©ãŠã¶å¯Ÿå¿ãGridã®å ¥ãåã®åºæ¬ããå¿çšãŸã§ãå®å šçè§£ãã
- ããã¯äŸ¿å©ïŒCSS Gridã®auto-fillãšauto-fitã®äœ¿ãåãã§RWDãæã