åçã§ã¬ã¹ãã³ã·ããªã¬ã€ã¢ãŠããå®çŸããããããã©ãã¯ãµã€ãºã®äº€æžãšå¶çŽè§£æ±ºã®ä»çµã¿ãçè§£ããCSS Gridã®å¯èœæ§ãæå€§éã«åŒãåºããŸãããã
CSS Gridãã©ãã¯ãµã€ãºäº€æžããã¹ã¿ãŒããïŒã¬ã€ã¢ãŠãå¶çŽè§£æ±ºãžã®æ·±æã
CSSã°ãªããã¬ã€ã¢ãŠãã¯ã2次å ã¬ã€ã¢ãŠãã«å¯Ÿããæ¯é¡ãªãå¶åŸ¡ãæäŸãããŠã§ããã¶ã€ã³ãžã®ã¢ãããŒãã«é©åœããããããŸããããã®ãã¯ãŒã¯åŠå®ã§ããŸããããã°ãªãããçã«ãã¹ã¿ãŒããã«ã¯ããã©ãã¯ãµã€ãºãã©ã®ããã«æ±ºå®ãããå¶çŽãã©ã®ããã«è§£æ±ºãããããæ·±ãçè§£ããããšãéµãšãªããŸããããã§ããã©ãã¯ãµã€ãºäº€æžãšããè€éãªããã»ã¹ãéèŠã«ãªã£ãŠããã®ã§ãã
åœéçãªéçºè ããã¶ã€ããŒã«ãšã£ãŠããããã®ã³ã¢ã¡ã«ããºã ãææ¡ããããšã¯ã倿§ãªããã€ã¹ãç»é¢ãµã€ãºãã³ã³ãã³ãéã«ããã£ãŠäžè²«ããŠæ©èœãããå ç¢ã§é©å¿æ§ã®é«ãã€ã³ã¿ãŒãã§ãŒã¹ãæ§ç¯ããããã«äžå¯æ¬ ã§ãããã®å æ¬çãªã¬ã€ãã§ã¯ãCSS Gridããã©ãã¯ãµã€ãºã亀æžããããã«äœ¿çšããã¢ã«ãŽãªãºã ãè§£æããããªãã®ã¬ã€ã¢ãŠããèŠèŠçã«é åçã§ããã ãã§ãªããæ©èœçã«ãã€ã³ããªãžã§ã³ãã§ããããšãä¿èšŒããŸãã
åºç€ã®çè§£ïŒã°ãªãããã©ãã¯ãšãã®ãµã€ãº
亀æžã®è©³çްã«å
¥ãåã«ãåºæ¬ãæŒãããŸããããCSS Gridã§ã¯ãã°ãªããã³ã³ãããå®çŸ©ãããã®äžã«ã¢ã€ãã ãé
眮ããŸããã°ãªããèªäœã¯ãã°ãªããã©ã€ã³éã®ã¹ããŒã¹ã§ãããã©ãã¯ã§æ§æãããŠããŸãããããã®ãã©ãã¯ã¯åãŸãã¯è¡ã«ãªããŸããç§ãã¡ã¯grid-template-columnsãgrid-template-rowsã®ãããªããããã£ã䜿çšããŠããããã®ãã©ãã¯ã®ãµã€ãºãæç€ºçã«å®çŸ©ããŸãã
ãã©ãã¯ãµã€ãºã®å®çŸ©ã«äœ¿çšãããäžè¬çãªåäœã«ã¯ã以äžã®ãããªãã®ããããŸãïŒ
- 絶察åäœïŒ
pxãcmãptãªã©ããããã¯åºå®ãµã€ãºãå®çŸ©ããŸãã - çžå¯ŸåäœïŒ
%ãemãremãvwãvhããããã®ãµã€ãºã¯ä»ã®èŠçŽ ããã¥ãŒããŒãã«çžå¯Ÿçã§ãã fråäœïŒ ã°ãªããã³ã³ããå ã®å©çšå¯èœãªã¹ããŒã¹ã®å²åã衚ãæè»ãªåäœã§ããããã¯Gridã®æè»æ§ã®åºç€ãšãªããŸãã- ããŒã¯ãŒãïŒ
autoãmin-contentãmax-contentããããã¯äº€æžã«ãããŠç¹ã«éèŠã§ãã
亀æžã®æ žïŒå¶çŽè§£æ±ºã¢ã«ãŽãªãºã
éæ³ãèµ·ããã®ã¯ãæå®ããããã©ãã¯ãµã€ãºã絶察çã§ãªãå Žåããåžæãããµã€ãºãšå©çšå¯èœãªã¹ããŒã¹ãšã®éã«ç«¶åãããå Žåã§ããCSS Gridã¯ããããã®å¶çŽã解決ããããã«æŽç·Žãããã¢ã«ãŽãªãºã ã䜿çšããã¬ã€ã¢ãŠããæ©èœãç¶ããããšãä¿èšŒããŸãã亀æžããã»ã¹ã¯ã倧ãŸãã«ããã€ãã®æ®µéã«åé¡ã§ããŸãïŒ
1. åºæã®ãµã€ãžã³ã°ïŒã³ã³ãã³ãã®åœ±é¿
ã°ãªããã³ã³ããã®æ¬¡å
ãèæ
®ããåã«ãGridã¯ã°ãªããã¢ã€ãã å
ã®ã³ã³ãã³ãã®åºæã®ãµã€ãžã³ã°ã調ã¹ãŸããããã§autoãmin-contentãmax-contentã圹å²ãæãããŸãã
min-contentïŒ ãã®ããŒã¯ãŒãã¯ãèŠçŽ ã®åºæã®æå°ãµã€ãºã衚ããŸããããã¹ãã®å Žåãã³ã³ãããããªãŒããŒãããŒããããšãªãããã¹ãã衚瀺ã§ããæå°ãµã€ãºïŒäŸïŒæãå¹ ã®åºãåèªã®å¹ ïŒã§ããä»ã®èŠçŽ ã®å Žåã¯ããã®æå°ã³ã³ãã³ããµã€ãºã«åºã¥ããŸããmax-contentïŒ ãã®ããŒã¯ãŒãã¯ãèŠçŽ ã®åºæã®æå€§ãµã€ãºã衚ããŸããããã¹ãã®å Žåãæ¹è¡ãªãã§äžè¡ã«åãããšãã®ããã¹ãã®å¹ ã§ããä»ã®èŠçŽ ã®å Žåã¯ããã®æå€§ã³ã³ãã³ããµã€ãºã«åºã¥ããŸããautoïŒ ãã®ããŒã¯ãŒãã¯æèã«äŸåããŸããGridã§ã¯ãautoã¯éåžžããã©ãã¯ããã®ã°ãªããã¢ã€ãã å ã®ã³ã³ãã³ãã«åºã¥ããŠèªèº«ããµã€ãžã³ã°ããããšãæå³ããŸãããå©çšå¯èœãªã¹ããŒã¹ãä»ã®ãã©ãã¯ãµã€ãºã«ãã£ãŠå¶çŽãããŸããå€ãã®å Žåãmin-contentãšmax-contentã®éã®å€ã«ããã©ã«ãèšå®ãããŸãã
å®è·µäŸïŒ ããŸããŸãªéã®ããã¹ããå«ãã«ãŒãã³ã³ããŒãã³ããæ³åããŠãã ããããããã®ã«ãŒããå«ãåã«grid-template-columns: auto;ã䜿çšãããšãåã¯æç€ºçãªãã¯ã»ã«å€ãå¿
èŠãšããã«ãæãå¹
ã®åºãã«ãŒãã®ã³ã³ãã³ãïŒãã®max-contentå¹
ïŒã«ã¡ããã©åãŸãããã«æ¡åŒµãããŸããéã«ãã³ã³ãã³ããéåžžã«å°ãªãå Žåãmin-contentãµã€ãºã«åãã£ãŠçž®å°ããå¯èœæ§ããããŸãã
2. æç€ºçãªãµã€ãžã³ã°ãšæå°å€
åºæã®ãµã€ãºãèæ
®ãããåŸãGridã¯æç€ºçãªãã©ãã¯ãµã€ãºãšå®çŸ©ãããæå°å€ãè©äŸ¡ããŸãããã¹ãŠã®ãã©ãã¯ã«ã¯ããã以äžã«ã¯çž®å°ããªãæå°ãµã€ãºããããŸããããã©ã«ãã§ã¯ããã®æå°å€ã¯å€ãã®å Žåããã®ã³ã³ãã³ãã®min-contentãµã€ãºã«ãã£ãŠæ±ºå®ãããŸãã
ãã ãã以äžã®æ¹æ³ã§ãã®ããã©ã«ãã®æå°å€ãäžæžãã§ããŸãïŒ
min()颿°ïŒmin(size1, size2, ...)ããã©ãã¯ã¯æå®ããããµã€ãºã®äžã§æãå°ãããã®ã«ãªããŸããmax()颿°ïŒmax(size1, size2, ...)ããã©ãã¯ã¯æå®ããããµã€ãºã®äžã§æã倧ãããã®ã«ãªããŸããclamp()颿°ïŒclamp(MIN, VAL, MAX)ããã©ãã¯ã¯VALã«ãªããŸãããMINãšMAXã«ãã£ãŠäžéãšäžéãèšå®ãããŸãã
ããã§ç¹ã«åŒ·åãªã®ãminmax(min, max)颿°ã§ãã ããã¯ãã©ãã¯ã®ãµã€ãºç¯å²ãå®çŸ©ããŸãããã©ãã¯ã¯å°ãªããšãminãæå€§ã§maxã«ãªããŸããããã¯æè»ã§å
ç¢ãªã¬ã€ã¢ãŠããäœæããããã®åºæ¬ã§ãã
å®è·µäŸïŒ å¹
ãå°ãªããšã200pxã§ãæå€§300pxãŸã§å€§ãããªãããã®åŸã¯å©çšå¯èœãªã¹ããŒã¹ã«å¿ããŠèª¿æŽããããµã€ãããŒãèããŠã¿ãŸãããããããgrid-template-columns: minmax(200px, 1fr);ãšå®çŸ©ã§ããŸããååãªã¹ããŒã¹ãããå Žåãããã¯ã¹ããŒã¹ã®äžéšïŒ1frïŒãå ããŸããã¹ããŒã¹ãçãå Žåã200pxãŸã§çž®å°ããŸããããã以äžã«ã¯ãªããŸããããã1frã300pxãã倧ããå€ã«è§£æ±ºãããå Žåãä»ã®æç€ºçãªæå€§å€ãèšå®ãããŠããã°300pxã§ãã£ããããããããããªãå¶çŽããªããã°æé·ãç¶ããŸãã
3. fråäœã®åãšå©çšå¯èœã¹ããŒã¹ã®åé
fråäœã¯ãæè»ãªãµã€ãžã³ã°ãšã¹ããŒã¹åé
ã«å¯ŸããGridã®çãã§ããfråäœã§å®çŸ©ããããã©ãã¯ãããå ŽåãGridã¯ãã¹ãŠã®åºå®ãµã€ãºã®ãã©ãã¯ãšåºæã®ã³ã³ãã³ããµã€ãºãèæ
®ããåŸã®ã°ãªããã³ã³ããå
ã®æ®ãã®ã¹ããŒã¹ãèšç®ããŸãããã®æ®ãã®ã¹ããŒã¹ã¯ããã®æ¯çã«å¿ããŠfrã§å®çŸ©ããããã©ãã¯éã§åé
ãããŸãã
èšç®æ¹æ³ïŒ
- ãã¹ãŠã®åºå®ãµã€ãºã®ãã©ãã¯ïŒ
pxã%ãemãmin-contentãmax-contentãªã©ïŒã®åèšãµã€ãºãèšç®ããŸãã - ãã®åèšãã°ãªããã³ã³ããã®å©çšå¯èœãªã¹ããŒã¹ããåŒããŸããããã«ããã空ãã¹ããŒã¹ããåŸãããŸãã
- ãã¹ãŠã®
frå€ãåèšããŸãã - ã空ãã¹ããŒã¹ãã
frå€ã®åèšã§å²ããŸããããã«ãã1frã®å€ãåŸãããŸãã - ãã®1
frã®å€ãåãã©ãã¯ã«å²ãåœãŠãããfrå€ã§æããŠãæçµçãªãµã€ãºãæ±ããŸãã
éèŠäºé
ïŒ fråäœã¯ãautoãã³ã³ãã³ãããŒã¹ã®ããŒã¯ãŒãã§æç€ºçã«ãµã€ãºãæå®ããããã§ã«å
·äœçãªãµã€ãºã«è§£æ±ºãããŠãããã©ãã¯ã«ã¯åé
ãããŸããããã©ãã¯ãautoã«èšå®ããããã®ã³ã³ãã³ããfrã®åé
ã§èš±ããããããå€ãã®ã¹ããŒã¹ãå¿
èŠãšããå Žåãautoã®ãã©ãã¯ãåªå
ãããfråäœã§å©çšã§ããã¹ããŒã¹ãçž®å°ãããå¯èœæ§ããããŸãã
å®è·µäŸïŒ 3ã€ã®åãæã€ã¬ã€ã¢ãŠããæ³åããŠãã ããïŒgrid-template-columns: 200px 1fr 2fr;ãã°ãªããã³ã³ããã®å¹
ã1000pxã®å ŽåïŒ
- æåã®åã¯200pxãå ããŸãã
- æ®ãã®ã¹ããŒã¹ïŒ1000px - 200px = 800pxã
fråäœã®åèšã¯1 + 2 = 3ã§ãã- 1
fr= 800px / 3 = 266.67pxã - 2çªç®ã®åïŒ1frïŒã¯266.67pxã«ãªããŸãã
- 3çªç®ã®åïŒ2frïŒã¯2 * 266.67px = 533.34pxã«ãªããŸãã
4. ç«¶åã®åŠçïŒãµã€ãºãå©çšå¯èœã¹ããŒã¹ãè¶ ããå Žå
åžæãããã©ãã¯ãµã€ãºã®åèšãã°ãªããã³ã³ããã®å©çšå¯èœã¹ããŒã¹ãè¶ ããå Žåã¯ã©ããªãã§ããããïŒããã¯ãç¹ã«ã¬ã¹ãã³ã·ããã¶ã€ã³ã§ã¯ããããã·ããªãªã§ãã
Gridã¯ã以äžãåªå ãã解決ã¢ã«ãŽãªãºã ã䜿çšããŸãïŒ
- æå°ãã©ãã¯ãµã€ãºïŒ ãã©ãã¯ã¯ãå®çŸ©ãããæå°å€ïŒç¹ã«æå®ããªãå Žåãããã©ã«ãã¯
min-contentïŒä»¥äžã«ã¯çž®å°ããŸããã fråäœã®æè»æ§ïŒfråäœã§å®çŸ©ããããã©ãã¯ã¯ãå©çšå¯èœãªã¹ããŒã¹ã®å€æŽãåžåããããã«èšèšãããŠããŸããä»ã®å¶çŽã«å¯Ÿå¿ããããã«çž®å°ããããšãã§ããŸããautoãã©ãã¯ïŒautoãã©ãã¯ã¯ã³ã³ãã³ãã«åãããããšããŸãããçž®å°ããããšãã§ããŸãã
èŠããã«ãGridã¯ãã¹ãŠã®å¶çŽãæºããããšããŸããããããã§ããªãå Žåã¯ããã©ãã¯ãå¯èœãªéãæå°ãµã€ãºã«ä¿ã¡ãæè»ãªåäœïŒfrãªã©ïŒãå§çž®ããããšãåªå
ããŸããæå°å€ããæºãããªãå Žåãã³ã³ãã³ãããªãŒããŒãããŒããå¯èœæ§ããããŸãã
ããã§minmax()颿°ãéèŠãªåœ¹å²ãæãããŸãã minmax()ã§æå°å€ãèšå®ããããšã§ãã¹ããŒã¹ã極端ã«å¶éãããŠããŠãããã©ãã¯ããã®ç¹ãäžåã£ãŠçž®å°ããªãããã«ä¿èšŒããŸããè€æ°ã®ãã©ãã¯ã§ãåèšãå©çšå¯èœãªã¹ããŒã¹ãè¶
ããæå°å€ãæã€minmax()ã䜿çšããŠããå ŽåãGridã¯ãããã®éã§ãªãŒããŒãããŒãåé
ããããšããŸãããæå°å€ã¯å¯èœãªéãå°éãããŸãã
å®è·µäŸïŒ ããã€ãã®ãŠã£ãžã§ãããæã€ããã·ã¥ããŒãã¬ã€ã¢ãŠããèããŠã¿ãŸããããåãŠã£ãžã§ããåãå°ãªããšãå¹
150pxã«ãããããæè»æ§ãæãããããšããŸããgrid-template-columns: repeat(auto-fit, minmax(150px, 1fr));ã䜿çšã§ããŸããã³ã³ããã500pxå¹
ã®å ŽåãGridã¯2ã€ã®åãåãããããããŸããïŒ2 * 150px = 300pxãæ®ãã®200pxã1frãå
±æïŒãã³ã³ããã250pxã«çž®å°ãããšã1ã€ã®åããåãŸãããå
šå¹
ã®250pxãå ããŸãïŒ1frã150pxããã倧ããããïŒã
5. fit-content()ã®åœ¹å²
ãã©ãã¯ãµã€ãžã³ã°ã®ããã®æ°ããéåžžã«äŸ¿å©ãªé¢æ°ãfit-content(limit)ã§ãããã®é¢æ°ã¯max-contentã®ããã«åäœããŸãããæå®ãããå¶éã«ãã£ãŠå¶çŽãããŸãã广çã«ã¯ããã³ã³ãã³ããæãã ãå¹
ãåºãããããã®å¶éãè¶
ããªãããã«ããšããæå³ã§ããããã¯ãã³ã³ãã³ãããŒã¹ã®ãµã€ãžã³ã°ãšæå€§å¶çŽã®ãã©ã³ã¹ãåãããã®åŒ·åãªæ¹æ³ã§ãã
èšç®æ¹æ³ïŒ fit-content(limit)ã¯max(min-content, min(max-content, limit))ã«è§£æ±ºãããŸãã
å®è·µäŸïŒ 補ååã®ããŒãã«åãæ³åããŠãã ãããæãé·ã補ååã«ååãªå¹
ãæããããããããŒãã«å
šäœã®ã¬ã€ã¢ãŠãã厩ãã»ã©åºãã¯ããããªããšããŸããgrid-template-columns: fit-content(200px);ã䜿çšã§ããŸããåã¯æãé·ã補ååã«åãããŠæ¡åŒµããŸããããã®ååã200pxããé·ãå Žåãåã¯200pxã§ãã£ãããããããã¹ãã¯æãè¿ãããã§ãããã
é«åºŠãªæŠå¿µãšã°ããŒãã«ãªèæ ®äºé
åœéåã倿§ãªã³ã³ãã³ããèæ ®ãããšã亀æžããã»ã¹ã¯ããã«åŸ®åŠãªãã®ã«ãªããŸãã
A. åœéåïŒi18nïŒãšå°ååïŒl10nïŒ
èšèªãç°ãªãã°ãããã¹ãã®é·ããç°ãªããŸãããã€ãèªã®è£œå説æã¯ãè±èªãããå€§å¹ ã«é·ããªãããšããããŸãããŠãŒã¶ãŒåãã¿ã€ãã«ããæåãèšèªã«ãã£ãŠé·ãã倧ããç°ãªãå ŽåããããŸãã
- ã³ã³ãã³ãããŒã¹ã®ãµã€ãžã³ã°ïŒ
autoãmin-contentãmax-contentãfit-content()ïŒã¯ãããã§ããªãã®æé«ã®å³æ¹ã«ãªããŸãã ãããã®å€ã«äŸåããããšã§ãGridã¯åºå®åäœã«ããäžèªç¶ãªåãæšãŠãéå°ãªç©ºçœãçããããããšãªããå®éã®ããã¹ãã®é·ãã«åãããŠãã©ãã¯ãµã€ãºãåçã«èª¿æŽã§ããŸãã fråäœãè³¢ã䜿ããŸãããã ãããã¯æ®ãã®ã¹ããŒã¹ãæ¯äŸããŠåé ãããããšãä¿èšŒããèšèªã«ããã³ã³ãã³ãã®æ¡å€§ãèæ ®ããªãå¯èœæ§ã®ããåºå®ããŒã»ã³ããŒãžãããäžè¬çã«å ç¢ã§ãã- 倿§ãªèšèªã§ã®ãã¹ããäžå¯æ¬ ã§ãã ãã©ãŠã¶ã®éçºè ããŒã«ã䜿çšããŠãäžæçã«ãã©ãŠã¶ã®èšèªãåãæ¿ãããã翻蚳ãããã³ã³ãã³ãã§èŠçŽ ãæ€æ»ãããããŠãGridã¬ã€ã¢ãŠãã調åãä¿ã£ãŠããããšã確èªããŠãã ããã
ã°ããŒãã«ãªäŸïŒ ãµã€ãåãã¿ã°ã©ã€ã³ã衚瀺ããããã¥ãŒã¹ãµã€ãã®ããããŒãèããŠã¿ãŸããããè±èªã§ã¯çããããããŸãããæ¥æ¬èªã§ã¯æ°æåã§è¡šçŸããããããããŸããããèŠèŠçãªå¹
ã¯ç°ãªããŸããããé·ãè€åèªãæã€èšèªã§ã¯ãéåžžã«é·ããªãå¯èœæ§ããããŸããããŽãå·ŠåŽã§ããã²ãŒã·ã§ã³ãå³åŽã«ããã¬ã€ã¢ãŠãã«grid-template-columns: max-content 1fr;ã䜿çšãããšãããŽãšãªã¢ã¯èªç¶ã«å¿
èŠãªã¹ããŒã¹ãå ããããã²ãŒã·ã§ã³ãæ®ããæè»ã«åããããšãã§ããããŽã®èŠèŠçãªå¹
ã«é©å¿ããŸãã
B. ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã®ã¹ã±ãŒãªã³ã°ãšã¢ã¯ã»ã·ããªãã£
äžçäžã®ãŠãŒã¶ãŒã¯ãã¢ã¯ã»ã·ããªãã£ã®ããã«ããã¹ããµã€ãºããºãŒã ã¬ãã«ã調æŽããŸããããªãã®Gridã¬ã€ã¢ãŠãã¯ããããã®å€æŽã«åªé ã«å¯Ÿå¿ãã¹ãã§ãã
- çžå¯ŸåäœïŒ
emãremãvwãvhïŒãããŠãŒã¶ãŒã®å¥œã¿ã«åãããŠã¹ã±ãŒã«ãããããé©åãªå Žæã§ã¯ãã©ãã¯ãµã€ãºã«äœ¿çšããããšãæšå¥šããŸãã - æè»ãªåäœãæã€
minmax()ïŒäŸïŒminmax(10rem, 1fr)ïŒã¯ãå©çšå¯èœãªã¹ããŒã¹ã掻çšãã€ã€ãæå°éã®èªã¿ããããµã€ãºãç¶æããé©å¿æ§ã®é«ãã³ã³ããŒãã³ããäœæããã®ã«åªããŠããŸãã - ããã¹ããµã€ãºãå¢å ãããšãã«ã³ã³ãã³ããèªç¶ã«ãªãããŒããã®ã劚ãããé床ã«å¶éçãªåºå®ãµã€ãºã¯é¿ããŠãã ããã
ã°ããŒãã«ãªäŸïŒ eã³ããŒã¹ã¢ããªã±ãŒã·ã§ã³ã®ååäžèЧããŒãžãç»ååã¯äžè²«ããã¢ã¹ãã¯ãæ¯ãæã€ã¹ãã§ãããããã¹ã説æåã¯ããŸããŸãªé·ãã®è£œååã説æã«é©å¿ããå¿
èŠããããŸããgrid-template-columns: 150px 1fr;ã¯è±èªã§ã¯æ©èœãããããããŸããããä»ã®èšèªã®è£œååãã¯ããã«é·ããã³ã³ããå¹
ãåºå®ãããŠããå ŽåããªãŒããŒãããŒããå¯èœæ§ããããŸããããè¯ãã¢ãããŒãã¯ã補åã°ãªããå
šäœã«grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));ã䜿çšããå補åã¢ã€ãã å
ã§grid-template-areasããããã¹ããã£ãŒã«ãã«min-contentãšmax-contentãæŽ»çšããgrid-template-columnsã䜿çšããããšã§ãã
C. ããã©ãŒãã³ã¹ã«é¢ããèæ ®äºé
Gridã¯éåžžã«é«æ§èœã§ãããå€ãã®ã³ã³ãã³ãããŒã¹ã®åºæãµã€ãžã³ã°èšç®ã䌎ãè€éãªèšç®ã¯ãç¹ã«æ§èœã®äœãããã€ã¹ãéåžžã«å€§ããªããŒã¿ã»ããã®å Žåãã¬ã³ããªã³ã°ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããããšããããŸãã
- æ·±ããã¹ããããGridã¢ã€ãã ãéåžžã«è€éãªåºæãµã€ãžã³ã°èšç®ã«æ³šæããŠãã ããã
- æ¬åœã«åºå®ãµã€ãºãå¿
èŠã§ãã³ã³ãã³ãã®ãããŒã«äŸåããªãèŠçŽ ã«ã¯ã
pxã%ã䜿çšããŠãã ããã - ãã©ãŠã¶ã®éçºè ããŒã«ã䜿çšããŠã¬ã€ã¢ãŠãããããã¡ã€ãªã³ã°ããããã©ãŒãã³ã¹ã®ããã«ããã¯ãç¹å®ããŠãã ããã
广çãªã°ãªãã亀æžã®ããã®å®è·µçæŠç¥
CSS Gridã®ãã©ãã¯ãµã€ãºäº€æžã®èœåãæå€§éã«æŽ»çšããããã«ããããã®æŠç¥ãæ¡çšããŠãã ããïŒ
1. åºæãµã€ãºããå§ãã
åžžã«ããªãã®ã³ã³ãã³ããã©ã®ããã«ãµã€ãºèšå®ããããããèããŠãã ãããæåã®æ§æèŠçŽ ãšããŠmin-contentãmax-contentãautoã䜿çšããŸããããã«ãããã¬ã€ã¢ãŠããæ¬è³ªçã«ãã®ã³ã³ãã³ãã«å¿çããããšãä¿èšŒããŸãã
2. æè»æ§ãšå¶çŽã®ããã«minmax()ã䜿çšãã
ããã¯ãå
ç¢ãªã¬ã€ã¢ãŠãã«ãšã£ãŠééããªãæãéèŠãªããŒã«ã§ããã³ã³ãã³ãã®åŽ©å£ãé²ãããã®æå°å€ãšãã¹ããŒã¹ã®åé
ãå¯èœã«ããããã®æå€§å€ïŒãŸãã¯frã®ãããªæè»ãªåäœïŒãå®çŸ©ããŸãã
grid-template-columns: minmax(200px, 1fr) minmax(150px, 2fr) 300px;
ãã®äŸã§ã¯3ã€ã®åãèšå®ããŸããæåã®åã¯å°ãªããšã200pxã§ãå©çšå¯èœãªæè»ãªã¹ããŒã¹ã®1/3ãå ããŸãã2çªç®ã®åã¯å°ãªããšã150pxã§ãå©çšå¯èœãªæè»ãªã¹ããŒã¹ã®2/3ãå ããŸãã3çªç®ã¯åºå®ã®300pxã§ãã
3. repeat()ãšauto-fitãŸãã¯auto-fillãæŽ»çšãã
ã¬ã¹ãã³ã·ããªã¢ã€ãã ã®ãªã¹ãïŒã«ãŒããååãªã¹ããªã©ïŒã«ã¯ãrepeat(auto-fit, minmax(min-size, 1fr))ãç»æçã§ããããã¯ã³ã³ããã®å¹
ã«åºã¥ããŠåã®æ°ãèªåçã«èª¿æŽããåã¢ã€ãã ãå°ãªããšãmin-sizeãšæè»ãªã¹ããŒã¹ãæã€ããšãä¿èšŒããŸãã
.card-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; }
ããã«ãããåã«ãŒããå°ãªããšã280pxå¹
ã«ãªãã°ãªãããäœæãããŸããã³ã³ããã3æã®ã«ãŒãã«ååãªå¹
ãããã°3æè¡šç€ºããã2æåãããªããŠã2æè¡šç€ºãããŸãã1frã¯ãããããåãåããããã«æ¡åŒµããããšãä¿èšŒããŸãã
4. æäœã®é åºãçè§£ãã
äžè¬çãªæµããæãåºããŠãã ããïŒåºæãµã€ãžã³ã° â æç€ºçãªãµã€ãº/æå°å€ â æè»ãªåäœã®åé â ç«¶åè§£æ±ºïŒæå°å€ãåªå ïŒã
5. åºç¯å²ã«ãã¹ããã
ããŸããŸãªã³ã³ãã³ãã®é·ããç»é¢ãµã€ãºãããã«ã¯ç°ãªããã©ãŠã¶ç°å¢ã§ã¬ã€ã¢ãŠãããã¹ãããŠãã ããããã©ãŠã¶ã®éçºè ããŒã«ã䜿çšããŠãããŸããŸãªããã€ã¹ããããã¯ãŒã¯æ¡ä»¶ãã·ãã¥ã¬ãŒãããŸãã
6. ã°ãªããã®ããžãã¯ãææžåãã
è€éãªã¬ã€ã¢ãŠããç¹ã«åœéçãªããŒã ã§ã¯ãç¹å®ã®ãã©ãã¯ãµã€ãºããªãéžã°ããã®ãããããŠããããã©ã®ããã«åäœãããšæåŸ ãããã®ããææžåããããšã¯ãå°æ¥ã®ã¡ã³ããã³ã¹ãéçºã«ãšã£ãŠéåžžã«äŸ¡å€ããããŸãã
çµè«
CSS Gridã®ãã©ãã¯ãµã€ãºäº€æžã¯ãéåžžã«åçã§ã¬ã¹ãã³ã·ããªã¬ã€ã¢ãŠããå¯èœã«ãã匷åãªã·ã¹ãã ã§ããåºæã®ã³ã³ãã³ããµã€ãºãæç€ºçãªãã©ãã¯å®çŸ©ãæè»ãªfråäœããããŠå¶çŽè§£æ±ºã¢ã«ãŽãªãºã ã®éã®çžäºäœçšãçè§£ããããšã§ãããããã³ã³ãã³ããã³ã³ããã¹ãã«ç¥çã«é©å¿ããæŽç·Žãããã€ã³ã¿ãŒãã§ãŒã¹ãæ§ç¯ã§ããŸãã
ã°ããŒãã«ãªèŠèŽè ã«ãšã£ãŠããããã®äº€æžååãåãå ¥ããããšã¯ãèŠèŠçã«äžè²«ããŠããã ãã§ãªããæ©èœçã«ãå ç¢ãªãŠã§ããµã€ããã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããšãæå³ããŸããèšèªãå°åãã¢ã¯ã»ã·ããªãã£ã®èŠä»¶ã«é¢ããããäžçäžã®ãŠãŒã¶ãŒã®å€æ§ãªããŒãºã«å¯Ÿå¿ã§ããŸãããããã®æŠå¿µããã¹ã¿ãŒããã°ãããªãã®ããã³ããšã³ãéçºã¹ãã«ã¯æ°ããªé«ã¿ã«éããçã«å埩åãããããŠãŒã¶ãŒäžå¿ã®ãã¶ã€ã³ãäœãäžããããšãã§ããã§ãããã