è¯ãäžæ¥ãåéïŒ
ããã¯ãFlexboxããã³GridCSSã¢ãžã¥ãŒã«ã®ãã¹ãŠã®ããããã£ã«é¢ããå®å šãªããžã¥ã¢ã«ããŒãã·ãŒãã¬ã€ãã§ãã
äž»ãªæ å ±æºïŒãã¬ãã·ããã¯ã¹ãžã®å®å šãªã¬ã€ããã°ãªãããžã®å®å šãªã¬ã€ãã
èšäºã®æåŸã«ãFlexboxã·ãã¥ã¬ãŒã¿ãŒã®äœæã«é¢ããå°ããªãã¥ãŒããªã¢ã«ããããŸãã
ãã以äžã®åæãªãã
FlexboxïŒFlexã以äžFlexãšåŒã³ãŸãïŒ
çšèª
Flexã¯åå¥ã®ããããã£ã§ã¯ãªããäžé£ã®ããããã£ãå«ãã¢ãžã¥ãŒã«å šäœã§ãããããã®ããããã£ã®äžéšã¯ã³ã³ããïŒãã¬ãã¯ã¹ã³ã³ãããšåŒã°ãã芪èŠçŽ ïŒã«è¿œå ããããã®ä»ã¯åèŠçŽ ïŒä»¥äžããã¬ãã¯ã¹ã¢ã€ãã ãšåŒã°ããïŒã«è¿œå ãããŸãã -èŠçŽ ïŒïŒã
ãéåžžã®ãã¬ã€ã¢ãŠãã¯ãããã¯èŠçŽ ãšã€ã³ã©ã€ã³èŠçŽ ã®ãããŒã«åºã¥ããŠããŸããããã¬ãã¯ã¹ã¬ã€ã¢ãŠãã¯ãã¬ãã¯ã¹ãããŒã®æ¹åã«åºã¥ããŠããŸãã仿§ãããã®ç»åãèŠãŠããã¬ãã¯ã¹ã¬ã€ã¢ãŠãã®èåŸã«ããéèŠãªã¢ã€ãã¢ã玹ä»ããŸãã
èŠçŽ ã¯ãäž»è»žã«æ²¿ã£ãŠïŒã¡ã€ã³ã¹ã¿ãŒãããã¡ã€ã³ãšã³ããŸã§ïŒããŸãã¯ã¯ãã¹è»žã«æ²¿ã£ãŠïŒã¯ãã¹ã¹ã¿ãŒãããã¯ãã¹ãšã³ããŸã§ïŒé 眮ãããŸãã
- â , , . ; «flex-direction» (, . )
- main-start | main-end â main-start main-end
- (main size) â (main dimension),
- â , .
- cross-start | cross-end â , cross-end cross-start
- (cross size) â
-
display
ãã®ããããã£ã¯ãã¬ãã¯ã¹ã³ã³ãããå®çŸ©ããŸããå²ãåœãŠãããå€ã«å¿ããŠãããã¯ãŸãã¯ã©ã€ã³ãããã«ã¯ãã³ã³ããã®ãã¹ãŠã®çŽæ¥ã®åã®ããã¬ãã¯ã¹ã³ã³ããã¹ãããå«ãŸããŸãã
.container {
display: flex; /* inline-flex */
}
ã³ã³ããã®CSSåã®ããããã£ã¯æ©èœããªãããšã«æ³šæããŠãã ããã
ãã¬ãã¯ã¹æ¹å
ãã®ããããã£ã¯ã䞻軞ãã€ãŸãã¢ã€ãã ãã³ã³ããã«é 眮ãããæ¹åãå®çŸ©ããŸããFlexèªäœïŒã©ãããŒããã®æ©èœãæ¡åŒµããããšãªãïŒã¯ãåæ¹åã¬ã€ã¢ãŠãã®æŠå¿µãå®è£ ããŸãããããã£ãŠãèŠçŽ ã¯æ°Žå¹³ç·ãŸãã¯åçŽåã®ããããã«é 眮ãããŸãã
.container {
flex-direction: row | row-reverse | column | column-reverse;
}
- è¡ïŒããã©ã«ãïŒïŒã¢ã€ãã ã¯ãltrã§ã¯å·Šããå³ã«ãrtlã§ã¯å³ããå·Šã«é 眮ãããŸãã
- è¡-éïŒã¢ã€ãã ã®è¡é ãéã«ããŸã-ltrã§ã¯å³ããå·Šãrtlã§ã¯å·Šããå³
- åïŒè¡ãšäŒŒãŠããŸãããäžããäžãž
- column-reverseïŒrow-reverseã«äŒŒãŠããŸãããäžããäžãž
ãã¬ãã¯ã¹ã©ããïŒã©ããããã©ã³ãžã·ã§ã³ãã¹ããªããïŒ
ããã©ã«ãã§ã¯ããã¹ãŠã®ã¢ã€ãã ã1è¡ã«é 眮ãããŸãããã®ããããã£ã䜿çšãããšãå¿ èŠã«å¿ããŠèŠçŽ ãæ¬¡ã®è¡ã«ç§»åãããããšãã§ããŸãã
.container {
flex-wrap: nowrap | wrap | wrap-reverse;
}
- nowrapïŒããã©ã«ãïŒïŒãã¹ãŠã®ã¢ã€ãã ã1è¡ã«ãããŸã
- æãè¿ãïŒèŠçŽ ã¯äžããäžã«è€æ°ã®è¡ã«ãŸãããããšãã§ããŸã
- wrap-reverseïŒèŠçŽ ã¯äžããäžã«è€æ°ã®è¡ã«ãŸãããããšãã§ããŸã
ãã¬ãã¯ã¹ãããŒïŒãããŒïŒ
ãã®ããããã£ã¯ãã³ã³ããã®äž»è»žãšäº€å·®è»žãå®çŸ©ããflex-directionãšflex-wrapã®çç¥åœ¢ã§ããããã©ã«ãã¯è¡nowrapã§ãã
.container {
flex-flow: column wrap;
}
justify-contentïŒã³ã³ãã³ãã1è¡ã«æããïŒ
ãã®ããããã£ã¯ãäž»è»žã«æ²¿ã£ãèŠçŽ ã®é çœ®ãæ±ºå®ããŸããããã«ãããåºå®ãµã€ãºã®æªäœ¿çšèŠçŽ ãŸãã¯æå€§ãµã€ãºã«éãããã¬ãã¯ã¹èŠçŽ ã«ãã£ãŠæ®ããã空ãé åã忣ã§ããŸãããŸãããªãŒããŒãããŒããã¢ã€ãã ã®é 眮ãå¶åŸ¡ããããšãã§ããŸãã
.container {
justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly | start | end | left | right ... + safe | unsafe;
}
- flex-startïŒããã©ã«ãïŒïŒã¢ã€ãã ã¯äž»è»žã«æ²¿ã£ãŠã³ã³ããã®å é ã«ç§»åãããŸã
- ãã¬ãã¯ã¹ãšã³ãïŒã¢ã€ãã ã¯ã³ã³ããã®æåŸã«ããã·ã¥ãããŸã
- startïŒãwriting-modeãããããã£ã®å€ã«ãã£ãŠæ±ºå®ãããèŠçŽ ãã³ã³ããã®å é ã«ç§»åãããŸã
- endïŒèŠçŽ ã¯ããwriting-modeãããããã£ã®å€ã«ãã£ãŠæ±ºå®ãããã³ã³ããã®æåŸã«ã·ãããããŸã
- å·ŠïŒã¢ã€ãã ã¯ã³ã³ããã®å·Šç«¯ã«ããã·ã¥ãããŸãããã¬ãã¯ã¹æ¹åããªãå Žåãåäœã¯éå§ãšåæ§ã§ã
- å³ïŒã¢ã€ãã ã¯ã³ã³ããã®å³ç«¯ã«æŒã蟌ãŸããŠããŸãããã¬ãã¯ã¹æ¹åããªãå Žåãåäœã¯éå§ãšåãã§ã
- center:
- space-between: , , â ,
- space-around: . , ; , . , ,
- space-evenly: ,
ãªã¹ããããŠããããããã£ã®ãµããŒãã¯ãã©ãŠã¶ã«ãã£ãŠç°ãªãããšã«æ³šæããŠãã ãããæãå®å šãªã®ã¯ããã¬ãã¯ã¹ã¹ã¿ãŒãããã¬ãã¯ã¹ãšã³ããã»ã³ã¿ãŒã§ãã
远å ã®ããŒã¯ãŒããsafeãããã³ãunsafeãã«ã€ããŠã¯ãsafeã䜿çšãããšãäœçœ®ã«é¢ä¿ãªããããŒãžã®å€åŽã«èŠçŽ ãæç»ããããšãåé¿ã§ããŸããããã«ãããã¹ã¯ããŒã«ã®å¯èœæ§ããªããªããŸãã
ã¢ã€ãã ã®æŽåïŒã¢ã€ãã ã®æŽåïŒ
ãã®ããããã£ã¯ãèŠçŽ ãæšªè»žã«æ²¿ã£ãŠã©ã®ããã«é 眮ãããããæ±ºå®ããŸããããã¯ã暪軞ïŒäž»è»žã«åçŽïŒã®æ£åœåã³ã³ãã³ããšæ¯èŒã§ããŸãã
.container {
align-items: stretch | flex-start | flex-end | center | baseline | first baseline | last baseline | start | end | self-start | self-end + ... safe | unsafe;
}
- ã¹ãã¬ããïŒããã©ã«ãïŒïŒèŠçŽ ã¯ã³ã³ããå šäœãåããããã«ã¹ãã¬ããããŸãïŒæå°å¹ /æå€§å¹ ã«ãã£ãŠç°ãªããŸãïŒ
- ãã¬ãã¯ã¹ã¹ã¿ãŒã/ã¹ã¿ãŒã/ã»ã«ãã¹ã¿ãŒãïŒã¢ã€ãã ã¯ã¯ãã¹è»žã®å§ç¹ã«ãªãã»ãããããŸããäžèšã®ããããã£ã®éãã¯éèŠã§ã¯ãªãããã¬ãã¯ã¹æ¹åãŸãã¯æžã蟌ã¿ã¢ãŒãã«ãã£ãŠç°ãªããŸãã
- ãã¬ãã¯ã¹ãšã³ã/ãšã³ã/ã»ã«ããšã³ãïŒã¢ã€ãã ã¯ã¯ãã¹è»žã®ç«¯ã«ãªãã»ãããããŸããæå®ãããããããã£éã®éãã¯éèŠã§ã¯ãªãããã¬ãã¯ã¹æ¹åãŸãã¯æžã蟌ã¿ã¢ãŒãã«ãã£ãŠç°ãªããŸã
- äžå€®ïŒèŠçŽ ã¯äžå€®ã«é 眮ãããŸã
- ããŒã¹ã©ã€ã³ïŒèŠçŽ ã¯ããŒã¹ã©ã€ã³ã«æ²¿ã£ãŠé 眮ãããŸã
修食åããŒã¯ãŒããsafeãããã³ãunsafeãã远å èšå®ãšããŠäœ¿çšããŠãã³ã³ãã³ãã«ã¢ã¯ã»ã¹ã§ããªãïŒã¢ã¯ã»ã¹ã§ããªããããŒãžå€ïŒèŠçŽ ã®é 眮ãåé¿ã§ããŸãã
align-contentïŒè€æ°è¡ã«ãŸããã£ãŠã³ã³ãã³ããæŽåïŒ
ãã®ããããã£ã¯ãæšªè»žã«æ²¿ã£ãŠç©ºãã¹ããŒã¹ãããå Žåã®ã³ã³ããã©ã€ã³ã®é çœ®ãæ±ºå®ããŸããããã¯ãäž»è»žã«æ²¿ã£ãŠåã ã®èŠçŽ éã«ã¹ããŒã¹ã忣ããjustify-contentã«äŒŒãŠããŸãã
åé¡ã®ããããã£ã¯ãflex-wrapããããã£ãwrapãŸãã¯wrap-reverseã«èšå®ãããŠããå Žåã«ãè€æ°è¡ã«ãŸãããã³ã³ããã³ã³ãã³ãã«ã®ã¿é©çšãããããšã«æ³šæããŠãã ãããã¯ã³ã©ã€ããŒã®å ŽåïŒãflex-wrapãããããã£ããno-wrapãã«èšå®ãããŠããå ŽåïŒãalign-contentãé©çšããŠã广ã¯ãããŸããã
.container {
align-content: flex-start | flex-end | center | space-between | space-around | space-evenly | stretch | start | end | baseline | first baseline | last baseline + ... safe | unsafe;
}
- éåžžïŒããã©ã«ãïŒïŒç·ã¯éåžžã®äœçœ®ã«ãããŸã
- flex-start / startïŒè¡ãã³ã³ããã®å é ã«ç§»åãããŸããflex-startã¯flex-directionã«äŸåããstartã¯æžã蟌ã¿ã¢ãŒãã«äŸåããŸã
- ãã¬ãã¯ã¹ãšã³ã/ãšã³ãïŒã©ã€ã³ã¯ã³ã³ããã®æåŸã«ããã·ã¥ãããŸãããã¬ãã¯ã¹ãšã³ãã¯ãã¬ãã¯ã¹æ¹åã«äŸåãããšã³ãã¯æžã蟌ã¿ã¢ãŒãã«äŸåããŸã
- äžå€®ïŒç·ã¯äžå€®ã«é 眮ãããŸã
- space-betweenïŒè¡ã¯ãæåã®è¡ãã³ã³ãããŒã®å é ã«ãæåŸã®è¡ãæåŸã«é 眮ãããæ®ãã®è¡ãçééã«ãªãããã«é 眮ãããŸãã
- ã¹ããŒã¹ã¢ã©ãŠã³ãïŒã©ã€ã³ã¯ãããã®éã«çééã§é 眮ãããŸã
- ã¹ããŒã¹åçïŒã©ã€ã³ã¯ãåã©ã€ã³ã®åšå²ã«çééã§é 眮ãããŸã
- ã¹ãã¬ããïŒç·ã䌞ã³ãŠå©çšå¯èœãªãã¹ãŠã®ã¹ããŒã¹ãåããŸã
修食åããŒã¯ãŒããsafeãããã³ãunsafeãã远å èšå®ãšããŠäœ¿çšããŠãã³ã³ãã³ãã«ã¢ã¯ã»ã¹ã§ããªãïŒã¢ã¯ã»ã¹ã§ããªããããŒãžå€ïŒèŠçŽ ã®é 眮ãåé¿ã§ããŸãã
ãã¬ãã¯ã¹ãšã¬ã¡ã³ãã®ããããã£
泚æïŒæ³šæïŒ
ããã©ã«ãã§ã¯ãèŠçŽ ã¯ããŒã¯ã¢ããã«ãªã¹ããããŠããé åºã§ã³ã³ãããŒã«é 眮ãããŸãããã®ããããã£ã䜿çšãããšããããå¶åŸ¡ã§ããŸãã
.item {
order: 5; /* 0 */
}
ãã¬ãã¯ã¹ã°ããŒïŒæé·ãæ¡åŒµïŒ
ãã®ããããã£ã¯ãå¿ èŠã«å¿ããŠèŠçŽ ãæ¡åŒµã§ãããã©ãããæ±ºå®ããŸããæ¯çãšããŠæ©èœããæŽæ°å€ãåããŸããæ¯çã¯ãã¢ã€ãã ãã³ã³ããå ã§å æã§ããã¹ããŒã¹ã®éãæ±ºå®ããŸãã
ãã¹ãŠã®ã¢ã€ãã ã®ãã¬ãã¯ã¹ã°ããŒã1ã®å Žåã䜿çšå¯èœãªã¹ããŒã¹ã¯ã¢ã€ãã éã§åçã«åæ£ãããŸããã¢ã€ãã ã®1ã€ã2ã®ãã¬ãã¯ã¹ã°ããŒãæã£ãŠããå Žåããã®ã¢ã€ãã ã¯æ®ãã®ã¢ã€ãã ãšæ¯èŒããŠ2åã®ã¹ããŒã¹ãå æããŸãïŒãŸãã¯å°ãªããšãããããããšããŸãïŒã
.item {
flex-grow: 4; /* 0 */
}
è² ã®å€ã¯ç¡å¹ã§ãã
ãã¬ãã¯ã¹ã·ã¥ãªã³ã¯ïŒã·ã¥ãªã³ã¯ãã·ã¥ãªã³ã¯ïŒ
ãã®ããããã£ã¯ãå¿ èŠã«å¿ããŠèŠçŽ ãå§çž®ã§ãããã©ãããæ±ºå®ããŸãã
.item {
flex-shrink: 3; /* 1 */
}
è² ã®å€ã¯ç¡å¹ã§ãã
ãã¬ãã¯ã¹ããŒã¹
ãã®ããããã£ã¯ãæ®ãã®ã¹ããŒã¹ãå²ãåœãŠãåã®èŠçŽ ã®ããã©ã«ããµã€ãºãå®çŸ©ããŸãããã®ãµã€ãºã¯ãé·ãïŒ20ïŒ ã5remãªã©ïŒãŸãã¯ããŒã¯ãŒãã«ããããšãã§ããŸããautoããŒã¯ãŒãã¯ãèŠçŽ ã®ãwidthããŸãã¯ãheightãããããã£ã®å€ã䜿çšããããšãæå³ããŸãïŒä»¥åã¯ãautoã®ä»£ããã«main-sizeã䜿çšãããŠããŸããïŒããcontentãããŒã¯ãŒãã¯ãèŠçŽ ã®ã³ã³ãã³ãã説æããããšãæå³ããŸããäžèšã®ããŒã¯ãŒãã¯ãŸã ååã«ãµããŒããããŠããªããããmin-contentãmax-contentãfit-contentã®éããåºå¥ããããšã¯å°é£ã§ãã
.item {
flex-basis: | auto; /* auto */
}
ãã®ããããã£ã®å€ã0ã®å ŽåãèŠçŽ ãå²ãã¹ããŒã¹ã¯èæ ®ãããŸãããå€ããautoãã®å Žåã䜿çšå¯èœãªã¹ããŒã¹ã¯ãflex-growãããããã£ã®å€ã«åŸã£ãŠå²ãåœãŠãããŸãã
ãã¬ãã¯ã¹
ãã®ããããã£ã¯ãflex-growãflex-shrinkãããã³flex-basisã®çç¥åœ¢ã§ãã2çªç®ãš3çªç®ã®ãã©ã¡ãŒã¿ãŒïŒflex-shrinkãšflex-basisïŒã¯ãªãã·ã§ã³ã§ããããã©ã«ãã¯01 autoã§ãautoã¯çç¥ã§ããŸãã
.item {
flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}
ããããã£å€ãæ£ããé åºã§èªåçã«æ±ºå®ãããããã«ãåããããã£ãå®çŸ©ãã代ããã«ãã®çç¥åœ¢ã䜿çšããããšããå§ãããŸãã
align-selfïŒåäžèŠçŽ ã®é 眮ïŒ
ãã®ããããã£ã䜿çšãããšãåã ã®èŠçŽ ã®ããã©ã«ããŸãã¯align-selfã¢ã©ã€ã¡ã³ããäžæžãã§ããŸãã
䜿çšå¯èœãªå€ã«ã€ããŠã¯ãalign-itemsã®èª¬æãåç §ããŠãã ããã
.item {
align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
floatãclearãvertical-alignã¯ãã¬ãã¯ã¹èŠçŽ ã«åœ±é¿ãäžããªãããšã«æ³šæããŠãã ããã
ã®äŸ
éåžžã«ç°¡åãªäŸããå§ããŸããã-èŠçŽ ãäžå¿ã«æããåé¡ã解決ããŸãã
.parent {
display: flex;
height: 300px; /* */
}
.child {
width: 100px; /* */
height: 100px; /* */
margin: auto; /* ! */
}
ããã¯ããautoãã«èšå®ããããmarginãããããã£ããã¬ãã¯ã¹ã³ã³ããã®äœ¿çšå¯èœãªãã¹ãŠã®ã¹ããŒã¹ãæ¶è²»ãããšããäºå®ã®ãããã§æ©èœããŸãããããã£ãŠãåçŽããã£ã³ã°å€ãautoã«èšå®ãããšãèŠçŽ ãäž¡æ¹ã®è»žã§å®å šã«äžå€®ã«é 眮ãããŸãã
ããã§ã¯ãããã«å€ãã®ããããã£ã䜿çšããŠã¿ãŸããããã¡ãã£ã¢ã¯ãšãªã䜿çšããã«ç»é¢å¹ ã«å¿ããŠãµã€ãºã倿Žã§ãã6ã€ã®åºå®ãµã€ãºèŠçŽ ããããŸãã䞻軞ã®å©çšå¯èœãªã¹ããŒã¹ãèŠçŽ éã§åçã«åæ£ãããããã«ããŸãã
.flex-container {
/* - */
display: flex;
/* ,
* :
* flex-direction: row;
* flex-wrap: wrap;
*/
flex-flow: row wrap;
/* , , */
justify-content: space-around;
}
å®äºãå°ãã¹ã¿ã€ã«ãæŽããå¿ èŠããããŸãã
ä»ã®ããšã詊ããŠã¿ãŸãããããµã€ãã®ããããŒã«å³æãã®ããã²ãŒã·ã§ã³ã¡ãã¥ãŒãããããããäžçšåºŠã®ç»é¢ã®äžå€®ã«é 眮ããå°ããªç»é¢ã®1ã€ã®åã«äžŠã¹ãããšããŸããç°¡åãªããŒã·ãŒã
/* */
.navigation {
display: flex;
flex-flow: row wrap;
/* */
justify-content: flex-end;
}
/* */
@media (max-width: 800px) {
.navigation {
/* */
justify-content: space-around;
}
}
/* */
@media (max-width: 500px) {
.navigation {
/* () () */
flex-direction: column;
}
}
èŠçŽ ã®æè»æ§ã詊ããŠã¿ãŸããããããŒã¯ã¢ããå ã®èŠçŽ ã®é åºã«äŸåããªããã«ãµã€ãºã®ããããŒãšããã¿ãŒã䜿çšããŠãã¢ãã€ã«ãã¡ãŒã¹ãã®3åã®ã¬ã€ã¢ãŠããäœæããã®ã¯ã©ãã§ããã
.wrapper {
display: flex;
flex-flow: row wrap;
}
/* flex-basis 100% */
.wrapper > * {
flex: 1 100%;
}
/*
* 1. header
* 2. article
* 3. aside 1
* 4. aside 2
* 5. footer
*/
/* */
@media all and (min-width: 600px) {
/* */
.aside { flex: 1 auto; }
}
/* */
@media all and (min-width: 800px) {
/* main
* main 2 ,
*/
.main { flex: 2 0px; }
.aside-1 { order: 1; }
.main { order: 2; }
.aside-2 { order: 3; }
.footer { order: 4; }
}
圹ç«ã€ãªãœãŒã¹
ãµããŒã
ã°ãªããïŒä»¥äžãã°ãªãããŸãã¯ã°ãªãããšåŒã³ãŸãïŒ
CSSã°ãªããã¬ã€ã¢ãŠãã¯ããããŸã§ã§æã匷åãªããŒãžã¬ã€ã¢ãŠãããŒã«ã§ããåæ¹åã·ã¹ãã ã§ããããã¯ãæååã§ã®ã¿æ©èœããFlexãšã¯ç°ãªããæååãšåã®äž¡æ¹ã§æ©èœããããšãæå³ããŸããã°ãªããã«ã¯ã芪èŠçŽ ïŒã°ãªããã³ã³ããã以äžãã³ã³ãããšåŒã³ãŸãïŒã®ããããã£ãšåèŠçŽ ïŒã°ãªããèŠçŽ ãã°ãªããèŠçŽ ã以äžãèŠçŽ ãšåŒã³ãŸãïŒã®ããããã£ãå«ãŸããŸãã
çšèª
ã°ãªããã³ã³ããïŒä»¥äžãã³ã³ãããšåŒã³ãŸãïŒ
å€ããgridãã®ãdisplayãããããã£ãå²ãåœãŠãããèŠçŽ ã¯ãã°ãªããã³ã³ããã«ãªããŸãããã®ã³ã³ããã¯ããã¹ãŠã®ã°ãªããã¢ã€ãã ã®çŽæ¥ã®ç¥å ã§ããæ¬¡ã®äŸã§ã¯ãã¯ã©ã¹ãcontainerããæã€divã¯ã°ãªããã³ã³ããã§ãã
<div class="container">
<div class="item item-1"> </div>
<div class="item item-2"> </div>
<div class="item item-3"> </div>
</div>
ã°ãªããã©ã€ã³ïŒä»¥äžãã©ã€ã³ãšåŒã³ãŸãïŒ
ã°ãªããã®æ§é ã圢æããåå²ç·ãåçŽãŸãã¯æ°Žå¹³ã«ããããšãã§ããè¡ãŸãã¯åã®å¢çã瀺ããŸããäžã®ç»åã®é»è²ãç·ã¯ãåçŽã°ãªããç·ïŒåã°ãªããç·ïŒã®äŸã§ãã
ã°ãªãããã©ãã¯ïŒä»¥äžããã©ãã¯ãŸãã¯ãã©ãã¯ãšåŒã³ãŸãïŒ
2ã€ã®é£æ¥ããç·ã®éã®ã¹ããŒã¹ããã©ãã¯ã¯ãã°ãªããã®è¡ãŸãã¯åãšèããããšãã§ããŸããããã¯ã2è¡ç®ãš3è¡ç®ã®éã®ãã©ãã¯ã®äŸã§ãã
ã°ãªãããšãªã¢ïŒä»¥äžããšãªã¢ãšåŒã³ãŸãïŒ
4æ¬ã®ç·ã®éã®åèšã¹ããŒã¹ããšãªã¢ã¯ãä»»æã®æ°ã®ã°ãªããã»ã«ã«ãŸãããããšãã§ããŸããããã¯ãæ°Žå¹³ç·1ãš3ãšåçŽç·1ãš3ã®éã®é åã®äŸã§ãã
ã°ãªããèŠçŽ ïŒä»¥äžãèŠçŽ ãšåŒã³ãŸãïŒ
ã³ã³ããã®åïŒçŽç³»ã®åå«ïŒã次ã®äŸã§ã¯ãã¯ã©ã¹ãitemãã®ã¢ã€ãã ã¯ã°ãªããã¢ã€ãã ã§ãããã¯ã©ã¹ãsub-itemãã®ã¢ã€ãã ã¯ã°ãªããã¢ã€ãã ã§ã¯ãããŸããã
<div class="container">
<div class="item"> </div>
<div class="item">
<p class="sub-item"> </p>
</div>
<div class="item"> </div>
</div>
ã°ãªããã»ã«ïŒä»¥äžãã»ã«ãšåŒã³ãŸãïŒ
2ã€ã®é£æ¥ããæ°Žå¹³ç·ãšåçŽç·ã®éã®ã¹ããŒã¹ãã°ãªããã®åºæ¬åäœã§ããããã¯ãæ°Žå¹³ç·1ãš2ãšåçŽç·2ãš3ã®éã®ã»ã«ã®äŸã§ãã
äŸ
ã¡ãã£ã¢ã¯ãšãªãªãã§ç»é¢å¹ ã«åºã¥ããŠèªåçã«ãµã€ãºå€æŽããããã¬ãã·ãã«å¹ ã®åã
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
/* min() */
/* grid-template-columns: repeat(auto-fill, minmax(min(200px, 100%), 1fr)); */
grid-gap: 1rem;
/* , */
/* gap: 1rem */
}
ã°ãªããã³ã³ããã®ããããã£
衚瀺
ãã®ããããã£ã¯ãèŠçŽ ãã°ãªããã³ã³ããã«ãããã®ã³ã³ãã³ãã®ã°ãªããã³ã³ããã¹ããèšå®ããŸãã
.container {
display: grid | inline-grid;
}
- ã°ãªãã-ãããã¯ã°ãªãã
- ã€ã³ã©ã€ã³ã°ãªãã-ã€ã³ã©ã€ã³ã°ãªãã
ãã¹ããããã°ãªãããäœæããæ©èœã¯ãCSSã°ãªããã¬ãã«2仿§ã«ç§»åãããŠããããšã«æ³šæããŠãã ããã
grid-template-columnsãgrid-template-rows
ãããã®ããããã£ã¯ãã¹ããŒã¹ã§åºåãããã°ãªããå€ã®åãšè¡ãå®çŸ©ããŸããå€ã¯ãã©ãã¯ã®ãµã€ãºã衚ããã¹ããŒã¹ã¯ã©ã€ã³ã衚ããŸãã
.container {
grid-template-columns: ... | ...;
grid-template-rows: ... | ...;
}
- <track-size>-ã°ãªããã®ç©ºãé åã®é·ããããŒã»ã³ããŒãžããŸãã¯å²åïŒãfrãåäœã䜿çšïŒ
- <è¡å>-ä»»æã®åå
ãã©ãã¯å€ã®éã«ç©ºçœãæ®ããšãç·ã«ã¯èªåçã«æ£ãšè² ã®çªå·ãå²ãåœãŠãããŸãã
.container {
grid-template-columns: 40px 50px auto 50px 40px;
grid-template-rows: 25% 100px auto;
}
è¡åã¯æç€ºçã«æå®ã§ããŸããåè§ãæ¬åŒ§ã«æ³šæããŠãã ããã
.container {
grid-template-columns: [first] 40px [line2] 50px [line3] auto [col4-start] 50px [five] 40px [end];
grid-template-rows: [row1-start] 25% [row1-end] 100px [third-line] auto [last-line];
}
è¡ã«ã¯è€æ°ã®ååãä»ããããšãã§ããŸããããã§ã¯ãããšãã°ã2è¡ç®ã«2ã€ã®ååããããŸãã
.container {
grid-template-rows: [row1-start] 25% [row1-end row2-start] 25% [row2-end];
}
å®çŸ©ã«ç¹°ãè¿ããã©ã°ã¡ã³ããå«ãŸããŠããå Žåã¯ããrepeatãã¹ããŒãã¡ã³ãã䜿çšããŠä»¥äžãççž®ã§ããŸãã
.container {
grid-template-columns: repeat(3, 20px [col-start]);
}
ããã¯æ¬¡ãšåçã§ãã
.container {
grid-template-columns: 20px [col-start] 20px [col-start] 20px [col-start];
}
è€æ°ã®è¡ã«åãååãããå Žåã¯ãè¡åãšãã®ãããªè¡ã®æ°ã䜿çšã§ããŸãã
.item {
grid-column-start: col-start 2;
}
ãfrããŠãããã䜿çšãããšããã©ãã¯ãµã€ãºãã³ã³ããã®ç©ºãé åã®äžéšãšããŠèšå®ã§ããŸãã以äžã®äŸã§ã¯ãåèŠçŽ ã¯ã³ã³ããã®å¹ ã®3åã®1ã§ãã
.container {
grid-template-columns: 1fr 1fr 1fr;
}
空ãé åã¯ãåºå®ãµã€ãºã®èŠçŽ ãå·®ãåŒããåŸã«èšç®ãããŸããæ¬¡ã®äŸã§ã¯ããfrããŠãããã䜿çšããŠå²ãåœãŠå¯èœãªã¹ããŒã¹ã«50pxãå«ãŸããŠããŸããã
.container {
grid-template-columns: 1fr 50px 1fr 1fr;
}
grid-template-areas
ãã®ããããã£ã¯ããgrid-areaãããããã£ã§å®çŸ©ããããšãªã¢åã䜿çšããŠã°ãªãããã³ãã¬ãŒããå®çŸ©ããŸãããšãªã¢åãç¹°ãè¿ããšãã³ã³ãã³ãã¯æå®ãããã»ã«æ°ã ãæ¡åŒµãããŸãããããã¯ç©ºã®ã»ã«ãæå³ããŸãããã®æ§æã«ãããã°ãªããã®æ§é ãèŠèŠåã§ããŸãã
.container {
grid-template-areas:
" | . | none | ..."
"...";
}
- <grid-area-name>-ãšãªã¢å
- ..ã-空ã®ã»ã«
- ãªã-ãšãªã¢ãªã
äŸïŒ
.item-a {
grid-area: header;
}
.item-b {
grid-area: main;
}
.item-c {
grid-area: sidebar;
}
.item-d {
grid-area: footer;
}
.container {
display: grid;
grid-template-columns: 50px 50px 50px 50px;
grid-template-rows: auto;
grid-template-areas:
"header header header header"
"main main . sidebar"
"footer footer footer footer";
}
ãã®ã³ãŒãã¯ãå¹ 4åãé«ã3è¡ã®ã°ãªãããäœæããŸããæåã®ïŒäžçªäžã®ïŒè¡ã¯ãããããŒã«ãã£ãŠå®å šã«å æãããŠããŸããäžå€®ã®è¡ã¯ã2ã€ã®ãã¡ã€ã³ãé åã1ã€ã®ç©ºã®ã»ã«ãããã³1ã€ã®ããµã€ãããŒãé åã§æ§æãããŠããŸããæåŸã®è¡ã¯å°äžã§ãã
å®çŸ©ã®åè¡ã«ã¯ãåãæ°ã®åãå¿ èŠã§ãã
空ã®ã»ã«ã衚ãããã«ãä»»æã®æ°ã®ãããã䜿çšã§ããŸãããããã®éã«ã¹ããŒã¹ããªãéãããããã¯ç©ºã®ã»ã«ã®ã€ã³ãžã±ãŒã¿ãŒã§ãã
ãã®æ§æã¯ãç·ã§ã¯ãªãé åã衚ãããã«äœ¿çšãããããšã«æ³šæããŠãã ããããã®æ§æã䜿çšãããšãé åã®äž¡åŽã®è¡ã«èªåçã«ååãä»ããããŸãããªãŒãžã§ã³åããfooãã®å ŽåããªãŒãžã§ã³ã®æåïŒæåïŒã®è¡ïŒè¡ãšåïŒã¯ãfoo-startãã«ãªããæåŸã®è¡ïŒè¡ãšåïŒã¯ãfoo-endãã«ãªããŸããããã¯ãäžèšã®äŸã®ããã«ãäžéšã®è¡ã«è€æ°ã®ååãä»ããããšãã§ããããšãæå³ããŸããå·Šäžã®è¡ã«ã¯ãheader-startãmain-startãfooter-startã®3ã€ã®ååããããŸãã
ã°ãªãããã³ãã¬ãŒã
ãã®ããããã£ã¯ãgrid-template-rowsãgrid-template-columnsãããã³grid-template-areasã®çç¥åœ¢ã§ãã
.container {
grid-template: none | <grid-template-rows> / <grid-template-columns>;
}
- none-3ã€ã®ããããã£ãã¹ãŠã®å€ãããã©ã«ãã«ãªã»ããããŸã
- <grid-template-rows> / <grid-template-columns>-ãgrid-template-rowsãããããã£ãšãgrid-template-columnsãããããã£ã察å¿ããå€ã«èšå®ãããgrid-template-areasãããããã£ããnoneãã«èšå®ããŸã
ããè€éã§ãããåæã«ã3ã€ã®ããããã£ãã¹ãŠã®å€ãå®çŸ©ããããã®ãã䟿å©ãªæ§æã䜿çšã§ããŸãïŒ
.container {
grid-template:
[row1-start] "header header header" 25px [row1-end]
[row2-start] "footer footer footer" 25px [row2-end]
/ auto 50px auto;
}
ããã¯ã次ãšåçã§ãã
.container {
grid-template-rows: [row1-start] 25px [row1-end row2-start] 25px [row2-end];
grid-template-columns: auto 50px auto;
grid-template-areas:
"header header header"
"footer footer footer";
}
grid-templateã¯ãã»ãšãã©ã®å Žåã«å¿ èŠãªæé»ã®Gridããããã£ïŒgrid-auto-columnsãgrid-auto-rowsãgrid-auto-flowãªã©ïŒããªã»ããããªãããã代ããã«ãgridãããããã£ã䜿çšããããšããå§ãããŸãã
column-gapãrow-gapãgrid-column-gapãgrid-row-gap
ãããã®ããããã£ã¯ãç·ã®ãµã€ãºã決å®ããŸããèšãæããã°ããããã¯å/è¡éã®ã€ã³ãã³ãã®éãæ±ºå®ããŸãã
.container {
/* */
column-gap: <line-size>;
row-gap: <line-size>;
/* */
grid-column-gap: <line-size>;
grid-row-gap: <line-size>;
}
- <line-size>-ã€ã³ãã³ãã®é
äŸïŒ
.container {
grid-template-columns: 100px 50px 100px;
grid-template-rows: 80px auto 80px;
column-gap: 10px;
row-gap: 15px;
}
ããã£ã³ã°ã¯ãã°ãªããã®ç«¯ã«æ²¿ã£ãŠã§ã¯ãªããå/è¡ã®éã«ã®ã¿äœæãããŸãã
ãgrid-column-gapãããããã£ãšãgrid-row-gapãããããã£ã®ååããcolumn-gapããšãrow-gapãã«å€æŽãããããšã«æ³šæããŠãã ããã
ã®ã£ãããã°ãªããã®ã£ãã
ãã®ããããã£ã¯ãrow-gapããã³column-gapã®çç¥åœ¢ã§ãã
.container {
/* */
gap: <grid-row-gap> <grid-column-gap>;
/* */
grid-gap: <grid-row-gap> <grid-column-gap>;
}
- <grid-row-gap> <grid-column-gap>-ããã£ã³ã°ãµã€ãº
äŸïŒ
.container {
grid-template-columns: 100px 50px 100px;
grid-template-rows: 80px auto 80px;
gap: 15px 10px;
}
ãrow-gapãããããã£ãèšå®ãããŠããªãå Žåã¯ããcolumn-gapãããããã£ã«èšå®ãããŸãã
ãgrid-gapãããããã£ã®ååããgapãã«å€æŽãããããšã«æ³šæããŠãã ããã
æ£åœå-ã¢ã€ãã
ãã®ããããã£ã¯ãç·ïŒæ°Žå¹³ïŒè»žã«æ²¿ã£ãã»ã«å ã®ã¢ã€ãã ã®é çœ®ãæ±ºå®ããŸãïŒãããã¯ïŒåãåçŽïŒè»žã«æ²¿ã£ãé çœ®ãæ±ºå®ãããalign-itemsãããããã£ãšã¯å¯Ÿç §çã§ãïŒããã®ããããã£ã®å€ã¯ãã³ã³ããå ã®ãã¹ãŠã®èŠçŽ ã«é©çšãããŸãã
.container {
justify-items: start | end | center | stretch;
}
- start-èŠçŽ ã¯ã»ã«ã®å é ã«ç§»åããŸãïŒå·Šã®å¢çç·ïŒ
- end-èŠçŽ ã¯ã»ã«ã®çµããã«ã·ãããããŸãïŒå³ã®å¢çç·ïŒ
- center-èŠçŽ ã¯äžå€®ã«é 眮ãããŸã
- ã¹ãã¬ãã-èŠçŽ ã¯ã»ã«ã®å šå¹ ãåããŸã
.container {
justify-items: start;
}
.container {
justify-items: end;
}
.container {
justify-items: center;
}
.container {
justify-items: stretch;
}
ã»ã«ã®ç·è»žã«æ²¿ã£ãåã ã®ã¢ã€ãã ã®äœçœ®ã¯ããjustify-selfãããããã£ã«ãã£ãŠå¶åŸ¡ãããŸãã
æŽåã¢ã€ãã
ãã®ããããã£ã¯ãããã¯ã¹ïŒåãåçŽïŒè»žã«æ²¿ã£ãã»ã«å ã®ã¢ã€ãã ã®é çœ®ãæ±ºå®ããŸãïŒè¡ïŒæ°Žå¹³ïŒè»žã«æ²¿ã£ãé çœ®ãæ±ºå®ãããjustify-itemsãããããã£ãšã¯å¯Ÿç §çã§ãïŒããã®ããããã£ã®å€ã¯ãã³ã³ããå ã®ãã¹ãŠã®èŠçŽ ã«é©çšãããŸãã
.container {
align-items: start | end | center | stretch;
}
- start-èŠçŽ ã¯ã»ã«ã®å é ã«ã·ãããããŸãïŒäžéšã®å¢çç·ïŒ
- end-èŠçŽ ã¯ã»ã«ã®çµããã«ã·ãããããŸãïŒäžã®å¢çç·ïŒ
- äžå€®-ã¢ã€ãã ã¯äžå€®ã«é 眮ãããŸã
- ã¹ãã¬ãã-èŠçŽ ã¯ã»ã«ã®é«ãå šäœãåããŸã
.container {
align-items: start;
}
.container {
align-items: end;
}
.container {
align-items: center;
}
.container {
align-items: stretch;
}
ã»ã«åè»žã«æ²¿ã£ãåã ã®èŠçŽ ã®äœçœ®ã¯ããalign-selfãããããã£ã«ãã£ãŠå¶åŸ¡ãããŸãã
å Žæ-ã¢ã€ãã
ãã®ããããã£ã¯ãalign-itemsããã³justify-itemsã®çç¥åœ¢ã§ãã
.container {
place-items: <align-items> <justify-items>;
}
- <align-items> <justify-items>ã¯ãalign-itemsã®æåã®å€ã§ãããjustify-itemsã®2çªç®ã®å€ã§ãã2çªç®ã®å€ããªãå Žåãæåã®å€ãäž¡æ¹ã®ããããã£ã«å²ãåœãŠãããŸãã
äŸïŒ
.container {
place-items: center start;
}
ã¢ã€ãã ã¯ãåè»žã«æ²¿ã£ãŠäžå€®ã«é 眮ãããç·è»žã«æ²¿ã£ãŠåç¹ã«é 眮ãããŸãã
justify-contentïŒåã®é 眮ïŒ
ã°ãªããèŠçŽ ïŒãã®åïŒã®åèšå¹ ãã³ã³ããã®å¹ ãããå°ããå ŽåããããŸããããã¯ãåºå®ãµã€ãºã®èŠçŽ ãå®çŸ©ãããšãã«çºçããå¯èœæ§ããããŸãïŒããšãã°ãpxã䜿çšïŒããã®å Žåãã³ã³ããå ã®ã°ãªããåã®é åºãå®çŸ©ã§ããŸãããã®ããããã£ã¯ãç·è»žã«æ²¿ã£ãã°ãªããã®é 眮ïŒåã®é 眮ïŒã決å®ããŸãïŒããã¯ã¹ïŒåïŒè»žã«æ²¿ã£ãã°ãªããã®é çœ®ãæ±ºå®ãã "align-content"ããããã£-è¡ã®é 眮ãšã¯å¯Ÿç §çïŒã
.container {
justify-content: start | end | center | stretch | space-around | space-between | space-evenly;
}
- start-ã°ãªãããã³ã³ããã®å é ïŒå·Šã®å¢çç·ïŒã«ç§»åããŸã
- end-ã°ãªãããã³ã³ããã®æåŸïŒå³ã®å¢çç·ïŒã«ç§»åããŸã
- center-ã°ãªããã¯äžå€®ã«é 眮ãããŸã
- stretch â ,
- space-around â ,
- space-between â , â ,
- space-evenly â ,
.container {
justify-content: start;
}
.container {
justify-content: end;
}
.container {
justify-content: center;
}
.container {
justify-content: stretch;
}
.container {
justify-content: space-around;
}
.container {
justify-content: space-between;
}
.container {
justify-content: space-evenly;
}
align-content ( )
ã°ãªããèŠçŽ ïŒãã®è¡ïŒã®åèšã®é«ããã³ã³ããã®é«ããããäœãå ŽåããããŸããããã¯ãåºå®ãµã€ãºã®èŠçŽ ãå®çŸ©ãããšãã«çºçããå¯èœæ§ããããŸãïŒããšãã°ãpxã䜿çšïŒããã®å Žåãã³ã³ããå ã®ã°ãªããè¡ã®é åºã決å®ã§ããŸãããã®ããããã£ã¯ãããã¯ã¹ïŒåïŒè»žã«æ²¿ã£ãã°ãªããã®é 眮-è¡ã®é 眮ãå®çŸ©ããŸãïŒã€ã³ã©ã€ã³è»žã«æ²¿ã£ãã°ãªããã®é çœ®ãæ±ºå®ãã "justify-content"ããããã£-åã®é 眮ãšã¯å¯Ÿç §çïŒã
.container {
align-content: start | end | center | stretch | space-around | space-between | space-evenly;
}
- start-ã°ãªãããã³ã³ããã®å é ïŒäžéšã®å¢çç·ïŒã«ç§»åããŸã
- end-ã°ãªãããã³ã³ããã®æåŸïŒäžã®å¢çç·ïŒã«ç§»åããŸã
- center-ã°ãªããã¯äžå€®ã«é 眮ãããŸã
- ã¹ãã¬ãã-ã°ãªãããã³ã³ããã®é«ãå šäœãå ããããã«ç·ãåŒã䌞ã°ãããŸã
- space-around-ã©ã€ã³éã®çééãããã³ã³ã³ããã®ãšããžã®åšãã®ãã®ååã®ã¹ããŒã¹
- space-between-æåã®è¡ãã³ã³ããã®æåã«ã·ãããããæåŸã®-æåŸã«-空ãã¹ããŒã¹ãæ®ãã®è¡ã«åçã«åæ£ãããŸã
- ã¹ããŒã¹-åç-ã©ã€ã³éãšã³ã³ããã®ç«¯ã®äž¡æ¹ã§çããã¹ããŒã¹
.container {
align-content: start;
}
.container {
align-content: end;
}
.container {
align-content: center;
}
.container {
align-content: stretch;
}
.container {
align-content: space-around;
}
.container {
align-content: space-between;
}
.container {
align-content: space-evenly;
}
å Žæ-ã³ã³ãã³ã
ãã®ããããã£ã¯ãalign-contentããã³justify-contentã®çç¥åœ¢ã§ãã
.container {
place-content: <align-content> <justify-content>;
}
- <align-content> <justify-content>ã¯align-contentã®æåã®å€ã§ã2çªç®ã¯justify-contentã®å€ã§ãã2çªç®ã®å€ããªãå Žåãæåã®å€ãäž¡æ¹ã®ããããã£ã«å²ãåœãŠãããŸãã
äŸïŒ
.container {
place-content: center start;
}
è¡ã¯ã³ã³ããã®äžå€®ã«é 眮ãããåã¯å é ã«ãããŸãã
grid-auto-columnsãgrid-auto-rowsïŒæé»ã®ãã©ãã¯ã®ãµã€ãºïŒ
ãããã®ããããã£ã¯ãèªåçæããããã©ãã¯ïŒæé»ã®ãã©ãã¯ïŒã®ãµã€ãºã決å®ããŸããæé»ã®ãã©ãã¯ã¯ãã°ãªããå ã®ã»ã«ãããå€ãã®ã¢ã€ãã ãããå ŽåããŸãã¯ã¢ã€ãã ãã°ãªããã®å€åŽã«é 眮ãããŠããå Žåã«äœæãããŸãã
.container {
grid-auto-columns: <track-size> ...;
grid-auto-rows: <track-size> ...;
}
- <track-size>-ã°ãªããã®ç©ºãé åã®é·ããããŒã»ã³ããŒãžããŸãã¯å²åïŒãfrãåäœã䜿çšïŒ
äŸïŒ
.container {
grid-template-columns: 60px 60px;
grid-template-rows: 90px 90px;
}
ããã«ããã2x2ã°ãªãããäœæãããŸãã
ãgrid-columnãããããã£ãšãgrid-rowãããããã£ã䜿çšããŠãã¢ã€ãã ãæ¬¡ã®ããã«é 眮ãããšããŸãã
.item-a {
grid-column: 1 / 2;
grid-row: 2 / 3;
}
.item-b {
grid-column: 5 / 6;
grid-row: 2 / 3;
}
ã¯ã©ã¹ãitem-bãã®èŠçŽ ã¯ãåçŽç·5ã§å§ãŸããåçŽç·6ã§çµãããŸããããããã®ç·ã¯å®çŸ©ãããŠããŸãããååšããªãè¡ãåç §ããŠãããããã€ã³ãã³ããåããããã«æé»ã®ãŒãå¹ ãã©ãã¯ãäœæãããŸãããgrid-auto-columnsãããããã£ã䜿çšããŠãæé»çãªãã©ãã¯ã®å¹ ãå®çŸ©ã§ããŸãã
.container {
grid-auto-columns: 60px;
}
ã°ãªãã-èªåãããŒ
èªåé 眮ã¢ã«ãŽãªãºã ã䜿çšããŠãã°ãªããã®å€åŽã«ã¢ã€ãã ãé 眮ã§ããŸããåé¡ã®ããããã£ã¯ããã®ã¢ã«ãŽãªãºã ãã©ã®ããã«æ©èœããããæ±ºå®ããŸãã
.container {
grid-auto-flow: row | column | row dense | column dense;
}
- è¡ïŒããã©ã«ãïŒ-ã¢ã«ãŽãªãºã ã¯çŸåšã®è¡ãå¶éãŸã§åããå¿ èŠã«å¿ããŠãçŸåšã®è¡ã®å¹ ãååã§ãªãå Žåãæ°ããè¡ãäœæããŸã
- column-ã¢ã«ãŽãªãºã ã¯çŸåšã®åãéçãŸã§åããå¿ èŠã«å¿ããŠãçŸåšã®åã®é«ããäžååãªå Žåãæ°ããåãäœæããŸã
- å¯-ç°ãªããµã€ãºã®èŠçŽ ãããå Žåã®ã°ãªããã®ã€ã³ããªãžã§ã³ããªå å¡«
å¯éãããšã¢ã€ãã ã®èŠèŠçãªé åºãå€ãããããã¢ã¯ã»ã·ããªãã£ã«æªåœ±é¿ãäžããå¯èœæ§ãããããšã«æ³šæããŠãã ããã
次ã®ããŒã¯ã¢ããããããšä»®å®ããŸãããã
<section class="container">
<div class="item-a">item-a</div>
<div class="item-b">item-b</div>
<div class="item-c">item-c</div>
<div class="item-d">item-d</div>
<div class="item-e">item-e</div>
</section>
5å2è¡ã®ã°ãªãããå®çŸ©ãããgrid-auto-flowãããããã£ããrowãïŒããã©ã«ãïŒã«èšå®ããŸãã
.container {
display: grid;
grid-template-columns: 60px 60px 60px 60px 60px;
grid-template-rows: 30px 30px;
grid-auto-flow: row;
}
ã°ãªããã«ã¢ã€ãã ãé 眮ããå Žåã2ã€ã®ã¢ã€ãã ã®ã¿ãé 眮ããŸãã
.item-a {
grid-column: 1;
grid-row: 1 / 3;
}
.item-e {
grid-column: 5;
grid-row: 1 / 3;
}
ãgrid-auto-flowãããããã£ã®å€ã¯ãrowãã§ãããããã°ãªããã¯æ¬¡ã®ç»åã®ããã«ãªããŸããã¯ã©ã¹ãitem-bãããitem-cãããitem-dãã®èŠçŽ ã®é çœ®ã«æ³šæããŠãã ããïŒè¡ãåªå ãããŸãïŒïŒ
ããããã£ãgrid-auto-flowãã®å€ããcolumnãã«å€æŽãããšãã°ãªããã¯æ¬¡ã®ããã«ãªããŸããæ¹æ³ïŒåãåªå ãããŸãïŒïŒ
ã°ãªãã
ãã®ããããã£ã¯ãgrid-template-rowsãgrid-template-columnsãgrid-template-areasãgrid-auto-rowsãgrid-auto-columnsãããã³grid-auto-flowã®çç¥åœ¢ã§ãïŒ1ã€ã®å®£èšã«å«ãŸããå Žåãããããšã«æ³šæããŠãã ããïŒã ãæç€ºçããŸãã¯ãæé»çãããããã£ã®ã¿ïŒã
- none-ãã¹ãŠã®ããããã£ã¯ããã©ã«ãå€ãåãå ¥ããŸã
- <grid-template> -grid-templateã·ã§ãŒãã«ããã«äŒŒãŠããŸã
- <grid-template-rows> / [auto-flow && densityïŒ] <grid-auto-columns>ïŒ-grid-template-rowsã®å€ãå®çŸ©ããŸããããŒã¯ãŒããauto-flowããã¹ã©ãã·ã¥ã®å³åŽã«ããå Žåããgrid-auto-flowãããããã£ã®å€ã¯ãcolumnãã«ãªããŸããèªåãããŒã«å ããŠããŒã¯ãŒããdenseããæå®ãããŠããå Žåãèªåãã¹ãã¢ã«ãŽãªãºã ã¯ããã«å¿ããŠã¢ã€ãã ãããã¯ããŸãããgrid-auto-columnsãããããã£ã®å€ãçç¥ãããšããã®å€ã¯ãautoãã«ãªããŸãã
- [èªåãããŒ&&é«å¯åºŠïŒ] <grid-auto-rows>ïŒ/ <grid-template-columns> -grid-template-columnsã®å€ãå®çŸ©ããŸããããŒã¯ãŒããauto-flowããã¹ã©ãã·ã¥ã®å·ŠåŽã«ããå Žåããgrid-auto-flowãããããã£ã®å€ã¯ãrowãã«ãªããŸããèªåãããŒã«å ããŠããŒã¯ãŒããdenseããæå®ãããŠããå Žåãèªåãã¹ãã¢ã«ãŽãªãºã ã¯ããã«å¿ããŠã¢ã€ãã ãããã¯ããŸãããgrid-auto-rowsãããããã£ã®å€ãçç¥ãããšããã®å€ã¯ãautoãã«ãªããŸãã
次ã®2ã€ã®ã³ãŒããããã¯ã¯åçã§ãã
.container {
grid: 100px 300px / 3fr 1fr;
}
.container {
grid-template-rows: 100px 300px;
grid-template-columns: 3fr 1fr;
}
次ã®2ã€ã®ã³ãŒããããã¯ã¯åçã§ãã
.container {
grid: auto-flow / 200px 1fr;
}
.container {
grid-auto-flow: row;
grid-template-columns: 200px 1fr;
}
次ã®2ã€ã®ã³ãŒããããã¯ã¯åçã§ãã
.container {
grid: auto-flow dense 100px / 1fr 2fr;
}
.container {
grid-auto-flow: row dense;
grid-auto-rows: 100px;
grid-template-columns: 1fr 2fr;
}
ãŸããæ¬¡ã®2ã€ã®ã³ãŒããããã¯ãåçã§ãã
.container {
grid: 100px 300px / auto-flow 200px;
}
.container {
grid-template-rows: 100px 300px;
grid-auto-flow: column;
grid-auto-columns: 200px;
}
ãã®å Žåãããè€éã§ãããåæã«ããgrid-template-areasãããgrid-template-rowsãããgrid-template-columnsãããããã£ãåæã«å®çŸ©ããä»ã®ããããã£ãããã©ã«ãå€ã«èšå®ããããã®ãã䟿å©ãªæ§æã䜿çšã§ããŸãã ..ããã®ããã«å¿ èŠãªããšã¯ãã©ã€ã³ã®ååãšãã©ãã¯ã®ãµã€ãºã1ã€ã®ã©ã€ã³äžã®å¯Ÿå¿ããé åãšãšãã«å®çŸ©ããããšã§ããããã¯ãäŸã䜿çšããŠç°¡åã«èª¬æã§ããŸãã
.container {
grid: [row1-start] "header header header" 1fr [row1-end]
[row2-start] "footer footer footer" 25px [row2-end]
/ auto 50px auto;
}
ããã¯ã次ãšåçã§ãã
.container {
grid-template-areas:
"header header header"
"footer footer footer";
grid-template-rows: [row1-start] 1fr [row1-end row2-start] 25px [row2-end];
grid-template-columns: auto 50px auto;
}
ã°ãªããã¢ã€ãã ã®ããããã£
ã°ãªããèŠçŽ ã«é©çšãããããããã£floatãdisplayïŒinline-blockãdisplayïŒtable-cellãvertical-alignãããã³column- *ã¯å¹æããªãããšã«æ³šæããŠãã ããã
grid-column-startãgrid-column-endãgrid-row-startãgrid-row-end
ãããã®ããããã£ã¯ãç¹å®ã®è¡ã«ã¹ãããããããšã«ãããã°ãªããå ã®èŠçŽ ã®äœçœ®ã決å®ããŸããgrid-column-start / grid-row-startã¯ã¢ã€ãã ã®éå§è¡ã§ãããgrid-column-end / grid-row-endã¯çµäºè¡ã§ãã
.item {
grid-column-start: <number> | <name> | span <number> | span <name> | auto;
grid-column-end: <number> | <name> | span <number> | span <name> | auto;
grid-row-start: <number> | <name> | span <number> | span <name> | auto;
grid-row-end: <number> | <name> | span <number> | span <name> | auto;
}
- <line>-çªå·ïŒè¡çªå·ã«ã¹ãããïŒãŸãã¯ååïŒè¡åã«ã¹ãããïŒã«ããããšãã§ããŸã
- span <number>-èŠçŽ ã¯æå®ããããã©ãã¯æ°ã ãåŒã䌞ã°ãããŸã
- span <name>-èŠçŽ ã¯æå®ãããååã®è¡ã«å°éãããŸã§äŒžã³ãŸã
- èªå-èªåã¬ã€ã¢ãŠããèªåå±éããŸãã¯ããã©ã«ãã®1åã¹ãã¬ãã
.item-a {
grid-column-start: 2;
grid-column-end: five;
grid-row-start: row1-start;
grid-row-end: 3;
}
.item-b {
grid-column-start: 1;
grid-column-end: span col4-start;
grid-row-start: 2;
grid-row-end: span 2;
}
grid-column-end / grid-row-endããããã£å€ãæå®ãããŠããªãå Žåãã¢ã€ãã ã¯ããã©ã«ãã§1ãã©ãã¯ãå æããŸãã
èŠçŽ ã¯äºãã«ãªãŒããŒã©ããã§ããŸããz-indexããããã£ã䜿çšããŠãèŠçŽ ã®ã¹ã¿ãã¯é åºãå¶åŸ¡ã§ããŸãã
grid-columnãgrid-row
ãããã®ããããã£ã¯ãããããgrid-column-start + grid-column-endããã³grid-row-start + grid-row-endã®çç¥åœ¢ã§ãã
.item {
grid-column: <start-line> / <end-line> | <start-line> / span <value>;
grid-row: <start-line> / <end-line> | <start-line> / span <value>;
}
- <start-line> / <end-line>-å€ã¯ãã¹ãã³ãå«ããå ã®ããããã£ãšåãã§ã
äŸïŒ
.item-c {
grid-column: 3 / span 2;
grid-row: third-line / 4;
}
çµäºè¡ãæå®ãããŠããªãå ŽåãèŠçŽ ã¯ããã©ã«ãã§1ãã©ãã¯ã«ãªããŸãã
ã°ãªãããšãªã¢
ãã®ããããã£ã¯ãgrid-template-areasããããã£ã®å€ãšããŠäœ¿çšãããèŠçŽ ã®ååãå®çŸ©ããŸããgrid-areaã¯ãgrid-row-start + grid-column-start + grid-row-end + grid-column-endã®çç¥åœ¢ãšããŠã䜿çšã§ããŸãã
.item {
grid-area: <name> | <row-start> / <column-start> / <row-end> / <column-end>;
}
- <name>-èŠçŽ ã®ä»»æã®åå
- <row-start> / <column-start> / <row-end> / <column-end>-æ°åãŸãã¯è¡åã«ããããšãã§ããŸã
èŠçŽ ã®åœåïŒ
.item-d {
grid-area: header;
}
grid-row-start + grid-column-start + grid-row-end + grid-column-endã®çç¥åœ¢ïŒ
.item-d {
grid-area: 1 / col4-start / last-line / 6;
}
æ£åœå-èªå·±
ãã®ããããã£ã¯ãè¡è»žã«æ²¿ã£ãã»ã«å ã®èŠçŽ ã®é 眮ãæå®ããŸãïŒããã¯ã¹ïŒåïŒè»žã«æ²¿ã£ãé 眮ãæå®ããalign-selfããããã£ãšã¯å¯Ÿç §çã§ãïŒããã®ããããã£ã¯ãåäžã»ã«å ã®èŠçŽ ã«é©çšãããŸãã
.item {
justify-self: start | end | center | stretch;
}
- start-èŠçŽ ã¯ã»ã«ã®å é ã«ç§»åããŸãïŒå·Šã®å¢çç·ïŒ
- end-èŠçŽ ã¯ã»ã«ã®çµããã«ã·ãããããŸãïŒå³ã®å¢çç·ïŒ
- center-èŠçŽ ã¯äžå€®ã«é 眮ãããŸã
- ã¹ãã¬ãã-èŠçŽ ã¯ã»ã«ã®å¹ å šäœãåããŸã
.item-a {
justify-self: start;
}
.item-a {
justify-self: end;
}
.item-a {
justify-self: center;
}
.item-a {
justify-self: stretch;
}
justify-itemsããããã£ã¯ãç·è»žã«æ²¿ã£ããã¹ãŠã®ã°ãªããã¢ã€ãã ã®é 眮ãå¶åŸ¡ããããã«äœ¿çšãããŸãã
æŽå-èªå·±
ãã®ããããã£ã¯ãããã¯ã¹ïŒåïŒè»žã«æ²¿ã£ãã»ã«å ã®ã¢ã€ãã ã®é çœ®ãæ±ºå®ããŸãïŒè¡è»žã«æ²¿ã£ãé çœ®ãæ±ºå®ããjustify-selfããããã£ãšã¯å¯Ÿç §çã§ãïŒããã®ããããã£ã¯ãåäžã»ã«å ã®èŠçŽ ã«é©çšãããŸãã
.item {
align-self: start | end | center | stretch;
}
- start-èŠçŽ ã¯ã»ã«ã®å é ïŒäžéšã®å¢çç·ïŒã«ç§»åããŸã
- end-èŠçŽ ã¯ã»ã«ã®çµããã«ã·ãããããŸãïŒäžã®å¢çç·ïŒ
- center-èŠçŽ ã¯äžå€®ã«é 眮ãããŸã
- ã¹ãã¬ãã-èŠçŽ ã¯ã»ã«ã®é«ãå šäœãåããŸã
.item-a {
align-self: start;
}
.item-a {
align-self: end;
}
.item-a {
align-self: center;
}
.item-a {
align-self: stretch;
}
align-itemsããããã£ã¯ããããã¯ïŒåïŒè»žã«æ²¿ã£ããã¹ãŠã®ã°ãªããã¢ã€ãã ã®é 眮ãå¶åŸ¡ããããã«äœ¿çšãããŸãã
å Žæ-èªå·±
ãã®ããããã£ã¯ãalign-selfããã³justify-selfã®çç¥åœ¢ã§ãã
- auto-ããã©ã«ãå€
- <align-self> / <justify-self>ã¯ãalign-selfã®æåã®å€ã§ãããjustify-selfã®2çªç®ã®å€ã§ãã2çªç®ã®å€ãçç¥ãããšãæåã®å€ãäž¡æ¹ã®ããããã£ã«é©çšãããŸã
.item-a {
place-self: center;
}
.item-a {
place-self: center stretch;
}
- , px, rem, % .., , min-content, max-content, auto , , â (fr). grid-template-columns: 200px 1fr 2fr min-content
- , . , , 1fr, 200px: grid-template-columns: 1fr minmax(200px, 1fr)
- repeat() : grid-template-columns: repeat(10, 1fr) ( , 1fr)
- ãããã®æ©èœã®çµã¿åããã«ãããæ¬¡ã®ãããªé©ãã¹ãã¬ã€ã¢ãŠãã®æè»æ§ãå¯èœã«ãªããŸããgrid-template-columnsïŒrepeatïŒauto-fillãminmaxïŒ200pxã1frïŒïŒïŒã°ãªããã»ã¯ã·ã§ã³ã®åé ã®äŸããïŒ
圹ç«ã€ãªãœãŒã¹
ãµããŒã
ãã¥ãŒããªã¢ã«
ãã®ãã¥ãŒããªã¢ã«ã§ã¯ãåºæ¬çãªFlexboxããããã£ã®ç°¡åãªãã¬ãŒããŒãäœæããŸãã
ããŒã¯ã¢ãã
<main>
<div id="controls">
<div id="buttons">
<button data-btn="addBtn">Add Item</button>
<button data-btn="removeBtn">Remove Item</button>
</div>
<fieldset id="flexContainerProps">
<legend>Flex Container Props</legend>
<label for="flexDirection">flex-direction</label>
<select id="flexDirection">
<option value="row" selected>row</option>
<option value="row-reverse">row-reverse</option>
<option value="column">column</option>
<option value="column-reverse">column-reverse</option>
</select>
<label for="flexWrap">flex-wrap</label>
<select id="flexWrap">
<option value="nowrap">nowrap</option>
<option value="wrap" selected>wrap</option>
<option value="wrap-reverse">wrap-reverse</option>
</select>
<label for="justifyContent">justify-content</label>
<select id="justifyContent">
<option value="flex-start">flex-start</option>
<option value="flex-end">flex-end</option>
<option value="center" selected>center</option>
<option value="space-between">space-between</option>
<option value="space-around">space-around</option>
<option value="space-evenly">space-evenly</option>
</select>
<label for="alignItems">align-items</label>
<select id="alignItems">
<option value="flex-start">flex-start</option>
<option value="flex-end">flex-end</option>
<option value="center" selected>center</option>
<option value="stretch">stretch</option>
<option value="baseline">baseline</option>
</select>
<label for="alignContent">align-content</label>
<select id="alignContent">
<option value="flex-start" selected>flex-start</option>
<option value="flex-end">flex-end</option>
<option value="center">center</option>
<option value="stretch">stretch</option>
<option value="space-between">space-between</option>
<option value="space-around">space-around</option>
<option value="space-evenly">space-evenly</option>
</select>
</fieldset>
<fieldset id="flexItemProps">
<legend>Flex Item Props</legend>
<label for="order">order</label>
<input
id="order"
type="number"
min="-5"
max="5"
step="1"
value="0"
/>
<label for="flexGrow">flex-grow</label>
<input
id="flexGrow"
type="number"
min="0"
max="5"
step="1"
value="0"
/>
<label for="flexShrink">flex-shrink</label>
<input
id="flexShrink"
type="number"
min="1"
max="6"
step="1"
value="1"
/>
<label for="alignSelf">align-self</label>
<select id="alignSelf">
<option value="auto" selected>auto</option>
<option value="flex-start">flex-start</option>
<option value="flex-end">flex-end</option>
<option value="center">center</option>
<option value="stretch">stretch</option>
<option value="baseline">baseline</option>
</select>
</fieldset>
</div>
<div id="flexContainer">
<div class="flex-item selected">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
<div class="flex-item">4</div>
<div class="flex-item">5</div>
<div class="flex-item">6</div>
</div>
</main>
ããã«ã¯ã6ã€ã®ãã¬ãã¯ã¹ã¢ã€ãã ãåããflexContainerãšãflexContainerPropsã®ããããã£ãšéžæããflexItemPropsã®ããããã£éã®åãæ¿ããå¶åŸ¡ããã³ã³ãããŒã«ããããŸãããŸãã2çªç®ã®ã³ã³ããã«ã¯2ã€ã®ãã¿ã³ããããŸãã1ã€ã¯ãã¬ãã¯ã¹ã³ã³ããã«èŠçŽ ã远å ããããã®ãã®ïŒaddBtnïŒã§ããã1ã€ã¯æåŸã®ãã¬ãã¯ã¹èŠçŽ ãåé€ããããã®ãã®ïŒremoveBtnïŒã§ãã
ã¹ã¿ã€ã«
main {
display: flex;
justify-content: center;
align-items: center;
}
#controls {
margin-right: 0.4rem;
}
#buttons {
margin: 0.4rem;
display: flex;
flex-wrap: wrap;
justify-content: center;
}
button {
margin: 0.2rem;
}
label {
display: block;
margin: 0.4rem;
}
select {
width: 100%;
}
#flexContainer {
width: 600px;
height: 600px;
border: 1px dashed #222;
border-radius: 4px;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
}
.flex-item {
min-width: 178px;
min-height: 178px;
background: radial-gradient(circle, yellow, orange);
border: 1px solid #222;
border-radius: 4px;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
color: #222;
font-size: 2rem;
display: flex;
justify-content: center;
align-items: center;
user-select: none;
cursor: pointer;
}
.flex-item:nth-child(2n) {
min-width: 158px;
min-height: 158px;
}
.flex-item:nth-child(3n) {
min-width: 198px;
min-height: 198px;
}
.flex-item.selected {
background: radial-gradient(circle, lightgreen, darkgreen);
}
ãã¬ãã¯ã¹èŠçŽ ã¯ããµã€ãºãç°ãªããåæã«æè»æ§ãããå¿ èŠããããŸããããã¯ãmin-width / min-heightããã³nth-childã§å®çŸããŸããéžæãããã¢ã€ãã ã¯ãç°ãªãèæ¯è²ã§ã¯ã©ã¹ãéžææžã¿ãã§ãã
èæ¬
//
const controls = document.querySelector('#controls')
const buttons = document.querySelector('#buttons')
const flexContainer = document.querySelector('#flexContainer')
//
buttons.addEventListener('click', (e) => {
//
if (e.target.tagName !== 'BUTTON') return
//
const { btn } = e.target.dataset
switch (btn) {
// -
case 'addBtn':
// 6
// -
//
const num = document.querySelectorAll('.flex-item').length + 1
// , 7
//
if (num < 7) {
// "div"
const newItem = document.createElement('div')
//
newItem.className = 'flex-item'
//
newItem.textContent = num
// -
flexContainer.append(newItem)
}
break
// -
case 'removeBtn':
//
const index = document.querySelectorAll('.flex-item').length - 1
// , 0
// -
if (index > 0) {
// ,
const itemToRemove = document.querySelectorAll('.flex-item')[index]
//
itemToRemove.remove()
}
break
}
})
//
controls.addEventListener('change', (e) => {
//
const prop = e.target.id
//
const value = e.target.value
// ,
// - -
//
if (e.target.parentElement.id === 'flexContainerProps') {
flexContainer.style[prop] = value
} else {
const selectedItem = document.querySelector('.selected')
selectedItem.style[prop] = value
}
})
// -
flexContainer.addEventListener('click', (e) => {
// -
if (
e.target.className !== 'flex-item' ||
e.target.classList.contains('selected')
)
return
// "selected"
if (document.querySelector('.selected') !== null)
document.querySelector('.selected').classList.remove('selected')
//
e.target.classList.add('selected')
// - "-"
//
// -
//
// ,
//
// -
const getStyle = (property, element = e.target) =>
getComputedStyle(element).getPropertyValue(property)
// , DOM-, "id",
// ,
order.value = getStyle('order')
flexGrow.value = getStyle('flex-grow')
flexShrink.value = getStyle('flex-shrink')
alignSelf.value = getStyle('align-self')
})
ã芧ã®ãšãããè€éãªããšã¯äœããããŸããããã¡ãããçµæã®ã·ãã¥ã¬ãŒã¿ãŒã®æ©èœã¯éåžžã«å¶éãããŠããŸãããã ããFlexboxã®åºæ¬çãªããããã£ãã©ã®ããã«æ©èœããããçè§£ããã«ã¯ããã§ååã ãšæããŸãã
ã°ãªããã®åºæ¬çãªããããã£ã«åºã¥ããŠåæ§ã®ã·ãã¥ã¬ãŒã¿ãŒãäœæããããšããå§ãããŸããããã¯åªããæ¹æ³ã§ããããã¹ãŠãæ£ããçè§£ã§ããããã«ãªããŸãã
ç§ã®æè¿ã®ãããžã§ã¯ãã®1ã€ã§ããModernHTML StarterTemplateãè峿·±ããããããŸããã
ãæž èŽããããšãããããŸãããè¯ãäžæ¥ãã