フレックスボックスã®åŸºæœ¬æ¦‚念
フレックスボックスレイアウト(通常フレックスボックスã¨å‘¼ã°ã‚Œã‚‹ï¼‰ã¯ã€ã‚¢ã‚¤ãƒ†ãƒ é–“ã®ä½™ç™½ã‚’分é…ã™ã‚‹ãŸã‚ã®ä¸€æ¬¡å…ƒãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆãƒ¢ãƒ‡ãƒ«ã§ã€æ•°å¤šãã®é…置機能をå«ã‚“ã§ã„ã¾ã™ã€‚ã“ã®è¨˜äº‹ã§ã¯ãƒ•レックスボックスã®ä¸»ãªæ©Ÿèƒ½ã®æ¦‚è¦ã‚’説明ã—ã€ã“ã®ã‚¬ã‚¤ãƒ‰ã®æ®‹ã‚Šã®éƒ¨åˆ†ã§ã•らã«è©³ã—ã説明ã—ã¾ã™ã€‚
フレックスボックスãŒä¸€æ¬¡å…ƒã§ã‚ã‚‹ã“ã¨ã¯ã€ãƒ•レックスボックスãŒä¸€ã¤ã®æ¬¡å…ƒã€ã¤ã¾ã‚Šè¡Œã‹åˆ—ã®ã„ãšã‚Œã‹ã®æ–¹å‘ã«ã—ã‹ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã—ãªã„ã“ã¨ã‚’è¿°ã¹ã¦ã„ã¾ã™ã€‚ã“れ㯠CSS グリッドレイアウトãŒè¡Œã¨åˆ—ã®äºŒæ¬¡å…ƒã‚’åŒæ™‚ã«åˆ¶å¾¡ã™ã‚‹ãƒ¢ãƒ‡ãƒ«ã§ã‚ã‚‹ã“ã¨ã¨å¯¾ç…§çš„ã§ã™ã€‚
フレックスボックス 2 ã¤ã®è»¸
フレックスボックスを使ã†ã¨ã㯠2 ã¤ã®è»¸ã€ã¤ã¾ã‚Šä¸»è»¸ (main axis) ã¨äº¤å·®è»¸ (cross axis) ã®è¦³ç‚¹ã‹ã‚‰è€ƒãˆã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚主軸㯠flex-direction プãƒãƒ‘ティã«ã‚ˆã£ã¦å®šç¾©ã•れã€äº¤å·®è»¸ã¯ä¸»è»¸ã«åž‚ç›´ã«äº¤ã‚る軸ã§ã™ã€‚フレックスボックスを使ã£ãŸæ“作ã§ã¯å¸¸ã«ã“ã®è»¸ã«ã¤ã„ã¦å‚ç…§ã™ã‚‹ã“ã¨ã«ãªã‚‹ã®ã§ã€æœ€åˆã«ãã®å‹•ãã‚’ç†è§£ã—ã¾ã—ょã†ã€‚
主軸
主軸㯠flex-direction ã«ã‚ˆã£ã¦å®šç¾©ã•れã€4 種類ã®å€¤ã‚’ã¨ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
rowrow-reversecolumncolumn-reverse
row ã¾ãŸã¯ row-reverse ã‚’é¸æŠžã—ãŸå ´åˆã€ä¸»è»¸ã¯ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³æ–¹å‘ã«æ²¿ã£ãŸè»¸ã¨ãªã‚Šã¾ã™ã€‚
column ã¾ãŸã¯ column-reverse ã‚’é¸ã‚“ã å ´åˆã¯ã€ãƒšãƒ¼ã‚¸ã®ä¸Šã‹ã‚‰ä¸‹ã«å‘ã‹ã£ã¦ãƒ–ãƒãƒƒã‚¯æ–¹å‘ã«æ²¿ã£ãŸè»¸ã¨ãªã‚Šã¾ã™ã€‚
交差軸
交差軸ã¯ä¸»è»¸ã«åž‚ç›´ã«äº¤ã‚る軸ã§ã™ã€‚ã—ãŸãŒã£ã¦ã€flex-direction (主軸) ㌠row ã¾ãŸã¯ row-reverse ãªã‚‰ã€äº¤å·®è»¸ã¯åˆ—ã«æ²¿ã£ãŸã‚‚ã®ã«ãªã‚Šã¾ã™ã€‚
主軸㌠column ã¾ãŸã¯ column-reverse ã§ã‚れã°ã€äº¤å·®è»¸ã¯è¡Œã®æ–¹å‘ã«ãªã‚Šã¾ã™ã€‚
行ã®å…ˆé ã¨æœ«å°¾
ã‚‚ã†ä¸€ã¤ã®é‡è¦ãªç†è§£ç‚¹ã¯ã€ãƒ•ãƒ¬ãƒƒã‚¯ã‚¹ãƒœãƒƒã‚¯ã‚¹ãŒæ–‡æ›¸ã®æ›¸å—æ–¹å‘ã«ã¤ã„ã¦ä¸€åˆ‡ã®ä»®å®šã‚’ã—ãªã„ã“ã¨ã§ã™ã€‚フレックスボックスã¯ã€ãƒ†ã‚ストã®ã™ã¹ã¦ã®è¡ŒãŒæ–‡æ›¸ã®å·¦ä¸Šã‹ã‚‰å§‹ã¾ã‚Šã€å³å´ã«å‘ã‹ã£ã¦å®Ÿè¡Œã—ã€æ–°ã—ã„行ãŒä»–ã®è¡Œã®ä¸‹ã« 1 行ãšã¤ç¾ã‚Œã‚‹ã“ã¨ã‚’想定ã—ã¦ã„ã‚‹ã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“。むã—ã‚ã€ä»–ã®è«–ç†ãƒ—ãƒãƒ‘ティや値ã®ã‚ˆã†ã«ã€ã™ã¹ã¦ã®æ›¸å—æ–¹å‘ã«å¯¾å¿œã—ã¦ã„ã¾ã™ã€‚
後述ã™ã‚‹ãƒ•ãƒ¬ãƒƒã‚¯ã‚¹ãƒœãƒƒã‚¯ã‚¹ã¨æ›¸å—æ–¹å‘ã®é–¢ä¿‚ã‚’èªã‚€ã“ã¨ã‚‚ã§ãã¾ã™ãŒã€ãƒ•ãƒ¬ãƒƒã‚¯ã‚¹ã‚¢ã‚¤ãƒ†ãƒ ãŒæµã‚Œã‚‹æ–¹å‘を説明ã™ã‚‹ã¨ãã«ã€å·¦å³ã‚„上下ã®è©±ã‚’ã—ãªã„ç†ç”±ã¯ã€ä»¥ä¸‹ã®èª¬æ˜Žã§ç†è§£ã§ãã‚‹ã¨æ€ã„ã¾ã™ã€‚
ã‚‚ã— flex-direction ㌠row ã§è¨€èªžãŒè‹±èªžã®å ´åˆã€ä¸»è»¸ã®å…ˆé ã¯å·¦ã§æœ«å°¾ã¯å³ã«ãªã‚Šã¾ã™ã€‚
一方ã§è¨€èªžãŒã‚‚ã—アラビア語ã§ã‚ã£ãŸå ´åˆã€ä¸»è»¸ã®å…ˆé ã¯å³ã§æœ«å°¾ãŒå·¦ã«ãªã‚Šã¾ã™ã€‚
両言語ã¨ã‚‚ã«æ›¸å—æ–¹å‘ãŒæ¨ªæ›¸ãã§ã‚ã‚‹ãŸã‚ã€ã„ãšã‚Œã®å ´åˆã§ã‚‚ã€äº¤å·®è»¸ã®å…ˆé å´ã¯ä¸Šã§æœ«å°¾å´ãŒä¸‹ã«ãªã‚Šã¾ã™ã€‚
ã“ã†ã—ã¦ã¿ã‚‹ã¨ã€å·¦ã¨å³ã§ã¯ãªãå…ˆé ã¨æœ«å°¾ã§è€ƒãˆã‚‹ã“ã¨ãŒè‡ªç„¶ãªã‚‚ã®ã«æ€ãˆã¾ã™ã€‚ã“ã®è€ƒãˆæ–¹ã¯ CSS グリッドレイアウトã®ã‚ˆã†ãªã€åŒã˜ãƒ‘ターンã«å¾“ã£ã¦ã„るレイアウト方法を扱ã†éš›ã«ã‚‚役立ã¤ã§ã—ょã†ã€‚
フレックスコンテナー
フレックスボックスを使用ã—ã¦ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆã•ã‚ŒãŸæ–‡æ›¸ã®é ˜åŸŸã‚’フレックスコンテナーã¨å‘¼ã³ã¾ã™ã€‚フレックスコンテナーを作æˆã™ã‚‹ã«ã¯ã€ãã®é ˜åŸŸã® display プãƒãƒ‘ティを flex ã«è¨å®šã—ã¾ã™ã€‚ãã†ã™ã‚‹ã¨ã€ãã®ã‚³ãƒ³ãƒ†ãƒŠãƒ¼ã®ç›´æŽ¥ã®åã¯ãƒ•レックスアイテムã«ãªã‚Šã¾ã™ã€‚コンテナーãã®ã‚‚ã®ã‚’インラインã§è¡¨ç¤ºã™ã‚‹ã‹ãƒ–ãƒãƒƒã‚¯æ•´å½¢ã‚³ãƒ³ãƒ†ã‚ストã§è¡¨ç¤ºã™ã‚‹ã‹ã¯ã€ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ãƒ•レックスコンテナーã§ã¯ inline flex ã¾ãŸã¯ inline-flex ã‚’ã€ãƒ–ãƒãƒƒã‚¯ãƒ¬ãƒ™ãƒ«ãƒ•レックスコンテナーã§ã¯ block flex ã¾ãŸã¯ flex を使用ã—ã¦æ˜Žç¤ºçš„ã«åˆ¶å¾¡ã§ãã¾ã™ã€‚
åˆæœŸå€¤
CSS ã®ã™ã¹ã¦ã®ãƒ—ãƒãƒ‘ティã¨åŒæ§˜ã«ã€ã„ãã¤ã‹ã®åˆæœŸå€¤ãŒå®šç¾©ã•れã¦ãŠã‚Šã€æ–°ã—ã„フレックスコンテナーã®ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã¯æ¬¡ã®ã‚ˆã†ã«å‹•作ã—ã¾ã™ã€‚
- フレックスアイテムã¯è¡Œã«æ²¿ã£ã¦ä¸¦ã‚“ã§è¡¨ç¤ºã•れã¾ã™ï¼ˆ
flex-directionプãƒãƒ‘ãƒ†ã‚£ã®æ—¢å®šå€¤ã¯rowã§ã™ï¼‰ã€‚ - フレックスアイテムã¯ä¸»è»¸ã®å…ˆé å´ã‚’å…ˆé ã«ä¸¦ã³ã¾ã™ã€‚
- フレックスアイテムã¯ä¸»è»¸æ–¹å‘ã«å¼•ã伸ã°ã•れã¾ã›ã‚“ãŒã€åŽç¸®ã™ã‚‹å ´åˆãŒã‚りã¾ã™ï¼ˆãƒ•レックスアイテムã®
flex-growプãƒãƒ‘ãƒ†ã‚£ã®æ—¢å®šå€¤ã¯0ã€flex-shrinkプãƒãƒ‘ãƒ†ã‚£ã®æ—¢å®šå€¤ã¯1ã§ã™ï¼‰ã€‚ - フレックスアイテムã¯ã€äº¤å·®è»¸ã®å¤§ãã•を埋ã‚るよã†ã«å¼•ã伸ã°ã•れã¾ã™ï¼ˆ
align-itemsプãƒãƒ‘ãƒ†ã‚£ã®æ—¢å®šå€¤ã¯stretchã§ã™ï¼‰ã€‚ - フレックスアイテムã®
flex-basisプãƒãƒ‘ãƒ†ã‚£ã®æ—¢å®šå€¤ã¯autoã§ã™ã€‚ã¤ã¾ã‚Šã€æ¨ªæ›¸ãã®å ´åˆã¯ãƒ•レックスアイテムã®widthã¨ç‰ã—ããªã‚Šã€ç¸¦æ›¸ãã®å ´åˆã¯ãƒ•レックスアイテムã®heightã¨ç‰ã—ããªã‚Šã¾ã™ã€‚対応ã™ã‚‹width/heightã‚‚autoã«è¨å®šã•れã¦ã„ã‚‹å ´åˆã¯ã€ä»£ã‚りã«flex-basisã®contentã®å€¤ãŒä½¿ç”¨ã•れã¾ã™ã€‚ - ã™ã¹ã¦ã®ã‚¢ã‚¤ãƒ†ãƒ 㯠1 列ã«ä¸¦ã³ï¼ˆ
flex-wrapプãƒãƒ‘ãƒ†ã‚£ã®æ—¢å®šå€¤ã¯nowrapã§ã™ï¼‰ã€ãれらã®width/heightã®åˆè¨ˆãŒã‚³ãƒ³ãƒ†ãƒŠãƒ¼è¦ç´ ã®width/heightã‚’è¶…ãˆã‚‹ã¨ã€ã‚³ãƒ³ãƒ†ãƒŠãƒ¼ã‹ã‚‰ã¯ã¿å‡ºã—ã¾ã™ã€‚
ãã®çµæžœã€ã‚¢ã‚¤ãƒ†ãƒ ã¯ã™ã¹ã¦ä¸€è¡Œã«ä¸¦ã³ã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®å¯¸æ³•ãŒä¸»è»¸æ–¹å‘ã®å¯¸æ³•ã«ãªã‚Šã¾ã™ã€‚アイテムãŒã‚³ãƒ³ãƒ†ãƒŠãƒ¼ã«åŽã¾ã‚‰ãªã„å ´åˆã¯ã€æŠ˜ã‚Šè¿”ã•れãšã«ã‚ãµã‚Œã¾ã™ã€‚一部ã®ã‚¢ã‚¤ãƒ†ãƒ ã®é«˜ã•ãŒä»–ã®ã‚¢ã‚¤ãƒ†ãƒ より高ã„å ´åˆã€ã™ã¹ã¦ã®ã‚¢ã‚¤ãƒ†ãƒ ã¯äº¤å·®è»¸å…¨ä½“ã®å¤§ãã•ã¾ã§å¼•ã伸ã°ã•れã¾ã™ã€‚
ã“ã®è¦‹ãˆæ–¹ã«ã¤ã„ã¦ã®ã€ä¾‹ã‚’ä»¥ä¸‹ã«æŒ™ã’ã¾ã™ã€‚ "Play" をクリックã™ã‚‹ã¨ã€ã“ã®ä¾‹ã‚’ MDN Playground ã§é–‹ãã€ã‚¢ã‚¤ãƒ†ãƒ を編集ã—ãŸã‚Šã€æ–°ã—ã„ã‚¢ã‚¤ãƒ†ãƒ ã‚’è¿½åŠ ã—ã¦åˆæœŸã®ãƒ•レックスボックスã®å‹•作を試ã—ãŸã‚Šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
<div class="box">
<div>One</div>
<div>Two</div>
<div>Three <br />ã«ã¯è¿½åŠ ã®<br />テã‚ストãŒ<br />ã‚りã¾ã™</div>
</div>
.box > * {
border: 2px solid rgb(96 139 168);
border-radius: 5px;
background-color: rgb(96 139 168 / 0.2);
}
.box {
border: 2px dotted rgb(96 139 168);
display: flex;
}
flex-direction ã®å¤‰æ›´
フレックスコンテナー㫠flex-direction プãƒãƒ‘ティをè¨å®šã™ã‚‹ã¨ã€ãƒ•レックスアイテムãŒè¡¨ç¤ºã•れる方å‘を変更ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ flex-direction: row-reverse ã¨è¨å®šã™ã‚‹ã“ã¨ã§ã€ã‚¢ã‚¤ãƒ†ãƒ ã¯è¡Œã«æ²¿ã£ã¦ä¸¦ã¶ç‚¹ã¯å¤‰ã‚りã¾ã›ã‚“ãŒã€å…ˆé ã¨æœ«å°¾ãŒå…¥ã‚Œæ›¿ã‚りã¾ã™ã€‚
flex-direction ã‚’ column ã«å¤‰æ›´ã™ã‚‹ã¨ã€ä¸»è»¸ã®æ–¹å‘ãŒå¤‰ã‚りã€ãƒ•レックスアイテムã¯åˆ—ã«æ²¿ã£ã¦ä¸¦ã‚“ã§è¡¨ç¤ºã•れるよã†ã«ãªã‚Šã¾ã™ã€‚ column-reverse ã§ã¯ã€ã•らã«å…ˆé ã¨æœ«å°¾ãŒå…¥ã‚Œæ›¿ã‚りã¾ã™ã€‚
ライブサンプルã§ã¯ã€flex-direction ㌠row-reverse ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ä»–ã®å€¤ã§ã‚ã‚‹ row, column, column-reverse ã§ä½•ãŒèµ·ã“ã‚‹ã‹ç¢ºã‹ã‚ã¦ã¿ã¦ãã ã•ã„。
<div class="box">
<div>One</div>
<div>Two</div>
<div>Three</div>
</div>
.box > * {
border: 2px solid rgb(96 139 168);
border-radius: 5px;
background-color: rgb(96 139 168 / 0.2);
}
.box {
border: 2px dotted rgb(96 139 168);
display: flex;
flex-direction: row-reverse;
}
flex-wrap ã«ã‚ˆã‚‹è¤‡æ•°è¡Œã®ãƒ•レックスコンテナー
フレックスボックス㯠1 次元ã®ãƒ¢ãƒ‡ãƒ«ã§ã™ãŒã€ãƒ•レックスアイテムを複数ã®è¡Œã«ã‚ãŸã£ã¦æŠ˜ã‚Šè¿”ã™ã“ã¨ã¯å¯èƒ½ã§ã™ã€‚ãã®å ´åˆã€å„行を新ã—ã„フレックスコンテナーã¨è€ƒãˆã¦ãã ã•ã„。å‰å¾Œã®è¡Œã‚’å‚ç…§ã™ã‚‹ã“ã¨ãªãã€å„行ã«ä½™ç™½ãŒåˆ†é…ã•れã¾ã™ã€‚
折り返ã—動作を発生ã•ã›ã‚‹ãŸã‚ã«ã¯ã€ flex-wrap プãƒãƒ‘ティ㫠wrap ã‚’è¿½åŠ ã—ã¾ã™ã€‚ã“れã§ã€ã‚¢ã‚¤ãƒ†ãƒ ãŒå¤§ãã™ãŽã¦ã™ã¹ã¦ 1 行ã«è¡¨ç¤ºã§ããªã„å ´åˆã€åˆ¥ã®è¡Œã«æŠ˜ã‚Šè¿”ã•れã¾ã™ã€‚次ã®ãƒ©ã‚¤ãƒ–サンプルã¯ã€ width ãŒæŒ‡å®šã•れãŸã‚¢ã‚¤ãƒ†ãƒ ã‚’å«ã‚“ã§ã„ã¾ã™ã€‚アイテムã®åˆè¨ˆå¹…ã¯ãƒ•レックスコンテナーã«ã¯åºƒã™ãŽã¾ã™ã€‚ flex-wrap ã‚’ wrap ã«è¨å®šã™ã‚‹ã¨ã€ã‚¢ã‚¤ãƒ†ãƒ ã¯è¤‡æ•°è¡Œã«ã¾ãŸãŒã£ã¦æŠ˜ã‚Šè¿”ã•れã¾ã™ã€‚ã“ã‚Œã‚’åˆæœŸå€¤ã§ã‚ã‚‹ nowrap ã«è¨å®šã™ã‚‹ã¨ã€ã‚³ãƒ³ãƒ†ãƒŠãƒ¼ã«åˆã†ã‚ˆã†ã«åŽç¸®ã—ã¾ã™ã€‚アイテムãŒåŽç¸®ã™ã‚‹ã®ã¯ã€ flex-shrink: 1 ã‚’å«ã‚€ãƒ•レックスボックスã®åˆæœŸå€¤ã‚’使用ã—ã¦ã„ã‚‹ã‹ã‚‰ã§ã™ã€‚ nowrap を使用ã™ã‚‹ã¨ã€ã‚¢ã‚¤ãƒ†ãƒ ãŒç¸®å°ã§ããªã‹ã£ãŸã‚Šã€åŽã¾ã‚‹ã»ã©å°ã•ã縮å°ã§ããªã‹ã£ãŸå ´åˆã«ã‚ªãƒ¼ãƒãƒ¼ãƒ•ãƒãƒ¼ãŒç™ºç”Ÿã—ã¾ã™ã€‚
<div class="box">
<div>One</div>
<div>Two</div>
<div>Three</div>
</div>
.box > * {
border: 2px solid rgb(96 139 168);
border-radius: 5px;
background-color: rgb(96 139 168 / 0.2);
width: 200px;
}
.box {
width: 500px;
border: 2px dotted rgb(96 139 168);
display: flex;
flex-wrap: wrap;
}
ãƒ•ãƒ¬ãƒƒã‚¯ã‚¹ã‚¢ã‚¤ãƒ†ãƒ ã®æŠ˜ã‚Šè¿”ã—ã«ã¤ã„ã¦ã®è©³ç´°ã¯ã€ãƒ•ãƒ¬ãƒƒã‚¯ã‚¹ã‚¢ã‚¤ãƒ†ãƒ ã®æŠ˜ã‚Šè¿”ã—をマスターã™ã‚‹ã‚’å‚ç…§ã—ã¦ãã ã•ã„。
flex-flow 一括指定プãƒãƒ‘ティ
flex-direction 㨠flex-wrap ã® 2 ã¤ã®ãƒ—ãƒãƒ‘ティã¯ã€flex-flow 一括指定プãƒãƒ‘ティã«ã‚ˆã‚Š 2 ã¤åŒæ™‚ã«æŒ‡å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
次ã®ä¾‹ã§ã€1 ã¤ç›®ã®å€¤ã‚’ flex-direction ã«ä½¿ãˆã‚‹å€¤ (row, row-reverse, column, column-reverse ã®ã„ãšã‚Œã‹) ã«å¤‰æ›´ã—ã¦ã¿ã¦ãã ã•ã„。ã¾ãŸã€2 ã¤ç›®ã®å€¤ã‚’ wrap ã‹ nowrap ã«å¤‰æ›´ã—ã¦ã¿ã¦ãã ã•ã„。
<div class="box">
<div>One</div>
<div>Two</div>
<div>Three</div>
</div>
.box > * {
border: 2px solid rgb(96 139 168);
border-radius: 5px;
background-color: rgb(96 139 168 / 0.2);
width: 200px;
}
.box {
width: 500px;
border: 2px dotted rgb(96 139 168);
display: flex;
flex-flow: row wrap;
}
フレックスアイテムã«é©ç”¨ã•れるプãƒãƒ‘ティ
ãれãžã‚Œã®ãƒ•レックスアイテムã®ã‚¤ãƒ³ãƒ©ã‚¤ãƒ³ã‚µã‚¤ã‚ºã‚’制御ã™ã‚‹ãŸã‚ã«ã€ 3 ã¤ã®ãƒ—ãƒãƒ‘ティã§ç›´æŽ¥å¯¾è±¡ã«ã—ã¾ã™ã€‚
以下ã§ã“れらã®ãƒ—ãƒãƒ‘ティを簡å˜ã«è¦‹ã¦ã„ãã¾ã™ãŒã€ã‚ˆã‚ŠåŒ…æ‹¬çš„ãªæƒ…å ±ãŒå¿…è¦ãªå ´åˆã¯ã€ä¸»è»¸æ–¹å‘ã®ãƒ•ãƒ¬ãƒƒã‚¯ã‚¹ã‚¢ã‚¤ãƒ†ãƒ ã®æ¯”率ã®åˆ¶å¾¡ã‚’å‚ç…§ã—ã¦ãã ã•ã„。
上述ã®ãƒ—ãƒãƒ‘ティã«ã¤ã„ã¦ç†è§£ã™ã‚‹å‰ã«ã€åˆ†é…å¯èƒ½ãªä½™ç™½ (available space) ã®æ¦‚念ã«ã¤ã„ã¦è€ƒãˆã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚上述ã®ãƒ—ãƒãƒ‘ティを変更ã™ã‚‹ã¨ã„ã†ã“ã¨ã¯ã€ã‚¢ã‚¤ãƒ†ãƒ é–“ã§ã®åˆ†é…å¯èƒ½ãªä½™ç™½ã®åˆ†é…ã®ã—ã‹ãŸã‚’変ãˆã‚‹ã¨ã„ã†ã“ã¨ã§ã™ã€‚ã“ã®åˆ†é…å¯èƒ½ãªä½™ç™½ã«ã¤ã„ã¦ã®è€ƒãˆæ–¹ã¯ã€ã‚¢ã‚¤ãƒ†ãƒ ã®é…ç½®ã«ã¤ã„ã¦è€ƒãˆã‚‹æ™‚ã«é‡è¦ã«ãªã‚Šã¾ã™ã€‚
ãŸã¨ãˆã°ã€ 500 ピクセル幅ã®ã‚³ãƒ³ãƒ†ãƒŠãƒ¼ã®ä¸ã« 100 ピクセル幅ã®ã‚¢ã‚¤ãƒ†ãƒ ㌠3 ã¤ã‚ã‚‹ã¨ãã€ã‚¢ã‚¤ãƒ†ãƒ ã®é…ç½®ã«å¿…è¦ãªå¹…㯠300 ピクセルã§ã™ã€‚ã“ã®ã¨ã 200 ピクセルã®åˆ†é…å¯èƒ½ãªä½™ç™½ãŒæ®‹ã£ã¦ã„ã¾ã™ã€‚åˆæœŸå€¤ã‚’変更ã—ãªã‹ã£ãŸå ´åˆãƒ•レックスボックスã¯ã€ä½™ç™½ã‚’最後ã®ã‚¢ã‚¤ãƒ†ãƒ ã®å¾Œã‚ã«é…ç½®ã—ã¾ã™ã€‚
ãã†ã§ã¯ãªãã€ã‚¢ã‚¤ãƒ†ãƒ を拡大ã—ã¦ä½™ç™½ã‚’埋ã‚ãŸã„ã¨ãã«ã¯ã€ä½™ã£ã¦ã„る余白をアイテムã«åˆ†é…ã™ã‚‹æ–¹æ³•ãŒå¿…è¦ã¨ãªã‚Šã¾ã™ã€‚アイテム自体ã«é©ç”¨ã•れるフレックスプãƒãƒ‘ティã¯ã€åˆ©ç”¨å¯èƒ½ãªä½™ç™½ã‚’ã©ã®ã‚ˆã†ã«å…„弟フレックスアイテムã«åˆ†é…ã™ã‚‹ã‹ã‚’決定ã—ã¾ã™ã€‚
flex-basis プãƒãƒ‘ティ
flex-basis ã¯ã€ãã®ã‚¢ã‚¤ãƒ†ãƒ ã®å¯¸æ³•ã‚’ã€ä½¿ç”¨ã—ãªã„余白ã¯åˆ†é…å¯èƒ½ãªä½™ç™½ã¨ã—ã¦æ®‹ã™ã‚ˆã†ã«å®šç¾©ã—ã¾ã™ã€‚ã“ã®ãƒ—ãƒãƒ‘ティã®åˆæœŸå€¤ã¯ auto ã§ã€ã“ã®è¨å®šã§ã¯ãƒ–ラウザーã¯ã‚¢ã‚¤ãƒ†ãƒ ã«å¯¸æ³•ãŒè¨å®šã•れã¦ã„ã‚‹ã‹ã‚’確èªã—ã¾ã™ã€‚上述ã®ä¾‹ã§ã¯ã€ã™ã¹ã¦ã®ã‚¢ã‚¤ãƒ†ãƒ ㌠100 ピクセルã®å¹…ã«è¨å®šã•れã¦ã„ã¾ã™ã€‚ã“れ㌠flex-basis ã¨ã—ã¦ä½¿ã‚れã¾ã™ã€‚
アイテムã«å¯¸æ³•ãŒè¨å®šã•れã¦ã„ãªã„å ´åˆã¯ã€ãã®å†…容ã®å¤§ãã•㌠flex-basis ã¨ã—ã¦ä½¿ã‚れã¾ã™ã€‚display: flex を親è¦ç´ ã«è¨å®šã™ã‚‹ã ã‘ã§ã€ã™ã¹ã¦ã®ãƒ•レックスアイテムãŒãã®ã‚¢ã‚¤ãƒ†ãƒ ã®å†…容を表示ã™ã‚‹ã®ã«å¿…è¦ãªä½™ç™½ã®ã¿ã‚’使用ã—ã¦è¡Œã®ä¸ã«æ•´åˆ—ã—ã¦ã„ãŸã®ã¯ã€ã“ã®æŒ™å‹•ã®ãŸã‚ã§ã™ã€‚
flex-grow プãƒãƒ‘ティ
flex-grow プãƒãƒ‘ティをæ£ã®æ•´æ•°ã«è¨å®šã™ã‚‹ã¨ã€åˆ†é…å¯èƒ½ãªä½™ç™½ãŒã‚ã‚‹å ´åˆã€ãƒ•レックスアイテム㯠flex-basis ã‹ã‚‰ä¸»è»¸ã«æ²¿ã£ã¦ä¼¸ã³ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚アイテムãŒãã®è»¸ã®åˆ†é…å¯èƒ½ãªä½™ç™½ã‚’ã™ã¹ã¦å ã‚るよã†ã«ä¼¸ã³ã‚‹ã‹ã€åˆ†é…å¯èƒ½ãªä½™ç™½ã®ä¸€éƒ¨ã ã‘ã‚’å ã‚るよã†ã«ä¼¸ã³ã‚‹ã‹ã¯ã€ä»–ã®ã‚¢ã‚¤ãƒ†ãƒ も伸ã³ã‚‹ã“ã¨ãŒè¨±å¯ã•れã¦ã„ã‚‹ã‹ã©ã†ã‹ã€ãã—ã¦ãれら㮠flex-grow プãƒãƒ‘ティã®å€¤ã«ã‚ˆã£ã¦æ±ºã¾ã‚Šã¾ã™ã€‚
æ£ã®å€¤ã‚’æŒã¤å„アイテムã¯ã€ flex-grow 値ã«åŸºã¥ã„ã¦åˆ†é…å¯èƒ½ãªä½™ç™½ã®ä¸€éƒ¨ã‚’消費ã—ã¾ã™ã€‚å…ˆã»ã©ã®ä¾‹ã§ã€ã™ã¹ã¦ã®ã‚¢ã‚¤ãƒ†ãƒ ã® flex-grow ã« 1 ã‚’è¨å®šã™ã‚‹ã¨ã€åˆ†é…å¯èƒ½ãªä½™ç™½ã¯ã‚¢ã‚¤ãƒ†ãƒ é–“ã§å‡ç‰ã«åˆ†é…ã•れã€ä¸»è»¸æ–¹å‘ã«ã‚³ãƒ³ãƒ†ãƒŠãƒ¼ã‚’埋ã‚るよã†ã«å¼•ã伸ã°ã•れã¾ã™ã€‚最åˆã®ã‚¢ã‚¤ãƒ†ãƒ ã® flex-grow ã« 2 ã‚’è¨å®šã—ã€ã»ã‹ã®ã‚¢ã‚¤ãƒ†ãƒ ã«ã¯ 1 ã‚’è¨å®šã—ãŸå ´åˆã€åˆè¨ˆãŒ 4 ã¤ã®éƒ¨åˆ†ã«ãªã‚Šã¾ã™ã€‚最åˆã®ã‚¢ã‚¤ãƒ†ãƒ ã« 2 ã¤åˆ†ï¼ˆå…ˆã»ã©ã®ä¾‹ã§ã¯ 200px ä¸ã® 100px)ãŒä¸Žãˆã‚‰ã‚Œã€æ®‹ã‚Šã® 2 ã¤ã®ã‚¢ã‚¤ãƒ†ãƒ ã« 1 ã¤åˆ†ï¼ˆ200px ä¸ã® 50px)ãšã¤ãŒä¸Žãˆã‚‰ã‚Œã¾ã™ã€‚
flex-shrink プãƒãƒ‘ティ
flex-grow プãƒãƒ‘ティãŒä¸»è»¸ä¸Šã®ä½™ç™½ã®è¿½åŠ ã‚’æ‰±ã†ä¸€æ–¹ã§ã€flex-shrink ã¯ä½™ç™½ã®å–りã‚ã’æ–¹ã‚’制御ã—ã¾ã™ã€‚ アイテムをé…ç½®ã™ã‚‹ã®ã«å分ãªä½™ç™½ãŒã‚³ãƒ³ãƒ†ãƒŠãƒ¼ã«ãªãã€flex-shrink ã«æ£ã®æ•´æ•°ãŒè¨å®šã•れã¦ã„れã°ã€ã‚¢ã‚¤ãƒ†ãƒ 㯠flex-basis よりもå°ã•ããªã‚Šã¾ã™ã€‚flex-grow ã¨åŒæ§˜ã«ã€ã‚るアイテムã®åŽç¸®ã™ã‚‹ã‚¹ãƒ”ードを他ã®ã‚¢ã‚¤ãƒ†ãƒ より早ãã™ã‚‹ãŸã‚ã«ã€ç•°ãªã‚‹å€¤ã‚’è¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã¤ã¾ã‚Š flex-shrink ã«ã‚ˆã‚Šå¤§ããªå€¤ãŒè¨å®šã•れã¦ã„るアイテムã¯ã€ä»–ã®ã‚ˆã‚Šå°ã•ãªå€¤ãŒè¨å®šã•れã¦ã„る兄弟è¦ç´ よりも早ãåŽç¸®ã—ã¾ã™ã€‚
アイテム㯠min-content ã®ã‚µã‚¤ã‚ºã¾ã§ç¸®å°ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã“ã®æœ€å°ã‚µã‚¤ã‚ºã¯ã€å®Ÿéš›ã«èµ·ã“ã‚‹åŽç¸®é‡ã‚’計算ã™ã‚‹éš›ã«è€ƒæ…®ã•れるãŸã‚〠flex-shrink 㯠flex-grow よりも挙動ãŒå®‰å®šã—ãªã„よã†ã«è¦‹ãˆã¦ã—ã¾ã†å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ãã®ãŸã‚ã€ãã®ã‚¢ãƒ«ã‚´ãƒªã‚ºãƒ ãŒã©ã®ã‚ˆã†ã«å‹•ãã‹ã«ã¤ã„ã¦ã®è©³ç´°ã¯ã€ä¸»è»¸æ–¹å‘ã®ãƒ•ãƒ¬ãƒƒã‚¯ã‚¹ã‚¢ã‚¤ãƒ†ãƒ ã®æ¯”率ã®åˆ¶å¾¡ã®è¨˜äº‹ã«æ›¸ã‹ã‚Œã¦ã„ã¾ã™ã€‚
メモ:
flex-grow ã‚„ flex-shrink ã«æŒ‡å®šã™ã‚‹å€¤ã¯æ¯”率ã§ã™ã€‚一般的ã«ã¯ã€ãŸã¨ãˆã°ã‚るアイテムを他㮠flex: 1 1 200px ã«è¨å®šã—ãŸã‚¢ã‚¤ãƒ†ãƒ より 2 å€ã®æ¯”çŽ‡ã§æ‹¡å¤§ã•ã›ãŸã„ã¨ãã«ã¯ã€ flex: 2 1 200px ã‚’è¨å®šã—ã¾ã™ã€‚ã—ã‹ã—ã€æœ›ã‚€ãªã‚‰ã° flex: 10 1 200px 㨠flex: 20 1 200px ã¨ã„ã†æ›¸ã方もã§ãã¾ã™ã€‚
flex プãƒãƒ‘ティã®ä¸€æ‹¬æŒ‡å®šã®å€¤
flex-growã€flex-shrinkã€flex-basis ã®å„プãƒãƒ‘ティを個別ã«ä½¿ã†ã‚±ãƒ¼ã‚¹ã¯ç¨€ã§ã‚りã€ãã®ã‹ã‚り㫠flex 一括指定プãƒãƒ‘ティã§ã¾ã¨ã‚ã¦æŒ‡å®šã•れるã“ã¨ãŒå¤šã„ã§ã—ょã†ã€‚flex 一括指定プãƒãƒ‘ティã¯ã€flex-growã€flex-shrinkã€flex-basis ã®é †ã« 3 ã¤ã®å€¤ã‚’è¨å®šã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
以下ã®ãƒ©ã‚¤ãƒ–サンプルã§ã¯ã€flex 一括指定プãƒãƒ‘ãƒ†ã‚£ã®æ§˜ã€…ãªå€¤ã‚’試ã›ã‚‹ã‚ˆã†ã«ãªã£ã¦ã„ã¾ã™ã€‚ 最åˆã®å€¤ãŒ flex-grow ã§ã‚ã‚Šã€æ£ã®å€¤ã‚’指定ã™ã‚‹ã“ã¨ã§ã‚¢ã‚¤ãƒ†ãƒ ãŒå¼•ã伸ã°ã•れるよã†ã«ãªã‚Šã¾ã™ã€‚2 番目ã®å€¤ã¯ flex-shrink ã§ã™ã€‚æ£ã®å€¤ã«ã‚ˆã‚Šã‚¢ã‚¤ãƒ†ãƒ ãŒåŽç¸®ã§ãるよã†ã«ãªã‚Šã¾ã™ãŒã€ã“れã¯ã‚¢ã‚¤ãƒ†ãƒ ã®å¯¸æ³•ã®åˆè¨ˆãŒä¸»è»¸ã‚’ã‚ãµã‚Œã‚‹å ´åˆã«ã®ã¿èµ·ã“りã¾ã™ã€‚最後ã®å€¤ãŒ flex-basis ã¨ãªã‚Šã€ã‚¢ã‚¤ãƒ†ãƒ ãŒä¼¸ç¸®ã™ã‚‹éš›ã®åŸºæº–値ã¨ãªã‚Šã¾ã™ã€‚
<div class="box">
<div class="one">One</div>
<div class="two">Two</div>
<div class="three">Three</div>
</div>
.box > * {
border: 2px solid rgb(96 139 168);
border-radius: 5px;
background-color: rgb(96 139 168 / 0.2);
}
.box {
border: 2px dotted rgb(96 139 168);
display: flex;
}
.one {
flex: 1 1 auto;
}
.two {
flex: 1 1 auto;
}
.three {
flex: 1 1 auto;
}
ã¾ãŸã€ã»ã¨ã‚“ã©ã®ç”¨é€”ã‚’ã‚«ãƒãƒ¼ã§ãã‚‹ã„ãã¤ã‹ã®å®šç¾©æ¸ˆã¿ã®ä¸€æ‹¬æŒ‡å®šå€¤ãŒã‚りã¾ã™ã€‚ ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ä¸ã§ä½¿ç”¨ã•れã¦ã„ã‚‹ã®ã‚’度々見ã‹ã‘ã‚‹ã§ã—ょã†ã—ã€ã»ã¨ã‚“ã©ã®å ´åˆã§ã“れらã®å€¤ã§å分ã§ã—ょã†ã€‚ 定義済ã¿ã®å€¤ã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šã§ã™ã€‚
flex: initialflex: autoflex: noneflex: <æ£ã®æ•°>
initial ã®ã¯ CSS 全般ã®å€¤ã§ã€ãƒ—ãƒãƒ‘ティã®åˆæœŸå€¤ã‚’表ã—ã¾ã™ã€‚ flex: initial ã‚’è¨å®šã™ã‚‹ã¨ã€ 3 ã¤ã®å€‹åˆ¥æŒ‡å®šãƒ—ãƒãƒ‘ティã®åˆæœŸå€¤ã«ãƒªã‚»ãƒƒãƒˆã•れã€flex: 0 1 auto ã¨åŒã˜ã«ãªã‚Šã¾ã™ã€‚ã“ã®å ´åˆ flex-grow 㯠0 ã¨ãªã‚‹ãŸã‚ã€ã‚¢ã‚¤ãƒ†ãƒ ㌠flex-basis よりも大ãããªã‚‹ã“ã¨ã¯ã‚りã¾ã›ã‚“。flex-shrink 㯠1 ãªã®ã§ã€å¿…è¦ãªå ´åˆã«ã¯ã¯ã¿å‡ºã•ãšã«åŽç¸®ã—ã¾ã™ã€‚ flex-basis ã®å€¤ã¯ auto ã§ã™ã€‚アイテムã«è¨å®šã•れã¦ã„る主軸方å‘ã®å¯¸æ³•ã‹ã€ã¾ãŸã¯ã‚¢ã‚¤ãƒ†ãƒ ã®å†…容ã®å¯¸æ³•ãŒãƒ•レックスアイテムã®å¯¸æ³•ã¨ã—ã¦ä½¿ç”¨ã•れã¾ã™ã€‚
flex: auto を使用ã™ã‚‹ã¨ã€ flex: 1 1 auto を使用ã™ã‚‹ã“ã¨ã¨åŒç‰ã«ãªã‚Šã¾ã™ã€‚ã“れ㯠flex: initial ã¨ä¼¼ã¦ã„ã¾ã™ãŒã€ã‚¢ã‚¤ãƒ†ãƒ ãŒã‚³ãƒ³ãƒ†ãƒŠãƒ¼ã‚’埋ã‚るよã†ã«å¼•ã伸ã°ã•れる点を除ãã¾ã™ã€‚
flex: none を使用ã™ã‚‹ã¨ã€å…¨ã伸縮性ã®ãªã„フレックスアイテムを作æˆã—ã¾ã™ã€‚ã“れ㯠flex: 0 0 auto ã¨åŒã˜ã§ã™ã€‚アイテムã¯ä¼¸ã³ç¸®ã¿ã›ãšã«ã€flex-basis ㌠auto ã®ãƒ•レックスボックスã¨ã—ã¦é…ç½®ã•れã¾ã™ã€‚
ãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«å†…ã§ã¯ã€flex: 1 ã‚„ flex: 2 ã®ã‚ˆã†ãªè¨å®šã‚’よãç›®ã«ã™ã‚‹ã§ã—ょã†ã€‚ã“れã¯ãれãžã‚Œ flex: 1 1 0 ã¾ãŸã¯ flex: 2 1 0 ã¨æ›¸ãã®ã¨åŒæ§˜ã§ã™ã€‚アイテム㯠flex-basis: 0 ã«ã‚ˆã£ã¦æœ€å°ã‚µã‚¤ã‚ºã«ãªã‚Šã€ãã®å¾Œåˆ©ç”¨å¯èƒ½ãªä½™ç™½ã‚’埋ã‚るよã†ã«æ¯”例ã—ã¦æ‹¡å¤§ã—ã¾ã™ã€‚ã“ã®å ´åˆã€ã‚¢ã‚¤ãƒ†ãƒ ã¯æœ€å°ã‚µã‚¤ã‚ºã‹ã‚‰å§‹ã¾ã‚‹ãŸã‚ã€flex-shrink ã®å€¤ 1 ã¯å†—é•·ã§ã™ã€‚アイテムã«ã¯ãƒ•レックスコンテナーã‹ã‚‰æº¢ã‚Œå‡ºã‚‹å¯èƒ½æ€§ã®ã‚るサイズãŒä¸Žãˆã‚‰ã‚Œã¦ã„ãªã„ã‹ã‚‰ã§ã™ã€‚
ã“れらã®ä¸€æ‹¬æŒ‡å®šå€¤ã«ã¤ã„ã¦ã€ä»¥ä¸‹ã®ä¾‹ã§è©¦ã—ã¦ã¿ã¦ãã ã•ã„。
<div class="box">
<div class="one">One</div>
<div class="two">Two</div>
<div class="three">Three</div>
</div>
.box > * {
border: 2px solid rgb(96 139 168);
border-radius: 5px;
background-color: rgb(96 139 168 / 0.2);
}
.box {
border: 2px dotted rgb(96 139 168);
display: flex;
}
.one {
flex: 1;
}
.two {
flex: 1;
}
.three {
flex: 1;
}
é…ç½®ã€ä½ç½®æƒãˆã€ã‚¢ã‚¤ãƒ†ãƒ é–“ã®è‡ªç”±ä½™ç™½ã®åˆ†é…
フレックスボックスã®ä¸»ãªæ©Ÿèƒ½ã¯ã€ä¸»è»¸ã¨äº¤å·®è»¸ã®ã‚¢ã‚¤ãƒ†ãƒ ã®é…ç½®ã¨ä½ç½®æƒãˆã€ãã—ã¦ãƒ•レックスアイテム間ã®ä½™ç™½ã®åˆ†é…ã§ã™ã€‚ã“れらã®ãƒ—ãƒãƒ‘ティã¯ã‚¢ã‚¤ãƒ†ãƒ ãã®ã‚‚ã®ã§ã¯ãªãã€ãƒ•レックスコンテナーã«è¨å®šã™ã‚‹ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。
align-items
align-items プãƒãƒ‘ティã¯ã€äº¤å·®è»¸ã«ãŠã‘るアイテムã®é…置を行ã„ã¾ã™ã€‚
ã“ã®ãƒ—ãƒãƒ‘ãƒ†ã‚£ã®æ—¢å®šå€¤ã¯ stretch ã§ã‚りã€ãƒ•ãƒ¬ãƒƒã‚¯ã‚¹ã‚¢ã‚¤ãƒ†ãƒ ã¯æ—¢å®šã§ã¯ãƒ•レックスコンテナーã®é«˜ã•(flex-direction ㌠column ã¾ãŸã¯ column-reverse ã«è¨å®šã•れã¦ã„ã‚‹å ´åˆã¯å¹…)ã«å¼•ã伸ã°ã•れã¾ã™ã€‚ã“ã®é«˜ã•ã¯ã‚³ãƒ³ãƒ†ãƒŠãƒ¼å†…ã§æœ€ã‚‚背ã®é«˜ã„アイテムã‹ã€ãƒ•レックスコンテナーãã®ã‚‚ã®ã«è¨å®šã•れã¦ã„るサイズã‹ã‚‰æ±ºã¾ã‚Šã¾ã™ã€‚
アイテムをフレックスコンテナーã®å…ˆé å´ã«æƒãˆã‚‹ãŸã‚ã«ã¯ align-items ã« flex-start ã¾ãŸã¯å˜ã« start ã‚’è¨å®šã—ã€æœ«å°¾å´ã«æƒãˆã‚‹ãŸã‚ã«ã¯ flex-end ã¾ãŸã¯å˜ã« end ã‚’ã€ä¸å¤®æƒãˆã«ã™ã‚‹ã«ã¯ center ã‚’è¨å®šã—ã¾ã™ã€‚ 以下ã®ä¾‹ã§è©¦ã—ã¦ã¿ã¾ã—ょã†ã€‚ã“ã®ä¾‹ã§ã¯ã€ã‚³ãƒ³ãƒ†ãƒŠãƒ¼å†…ã§ã‚¢ã‚¤ãƒ†ãƒ ãŒã©ã®ã‚ˆã†ã«ç§»å‹•ã™ã‚‹ã‹ã‚ã‹ã‚Šã‚„ã™ãã™ã‚‹ãŸã‚フレックスコンテナーã«é«˜ã•ã‚’è¨å®šã—ã¦ã„ã¾ã™ã€‚align-items ã«ä»¥ä¸‹ã®å€¤ã‚’è¨å®šã—ãŸã¨ãã«ãれãžã‚Œä½•ãŒèµ·ã“ã‚‹ã‹ç¢ºèªã—ã¦ãã ã•ã„。
stretchflex-startflex-endstartendcenterbaselinelast baseline
<div class="box">
<div>One</div>
<div>Two</div>
<div>Three <br />ã«ã¯è¿½åŠ ã®<br />テã‚ストãŒ<br />ã‚りã¾ã™</div>
</div>
.box > * {
border: 2px solid rgb(96 139 168);
border-radius: 5px;
background-color: rgb(96 139 168 / 0.2);
}
.box {
width: 500px;
height: 130px;
border: 2px dotted rgb(96 139 168);
display: flex;
align-items: flex-start;
}
align-items ã¯ãƒ•レックスコンテナーã«è¨å®šã—ã€ã™ã¹ã¦ã®ãƒ•レックスアイテムã«å½±éŸ¿ã—ã¾ã™ã€‚ã‚るフレックスアイテムを他ã¨ç•°ãªã‚‹é…ç½®ã«ã—ãŸã„å ´åˆã¯ã€ align-self ã‚’è¨å®šã—ã¦ãã ã•ã„。
justify-content
justify-content プãƒãƒ‘ティã¯ã€ä¸»è»¸ã«ãŠã‘るアイテムã®é…ç½®ã€ã¤ã¾ã‚Š flex-direction ã§è¨å®šã•ã‚ŒãŸæ–¹å‘ã«ãŠã‘ã‚‹é…置を行ã„ã¾ã™ã€‚åˆæœŸå€¤ã¯ flex-start ã§ã€ã‚³ãƒ³ãƒ†ãƒŠãƒ¼ã®å…ˆé å´ã‹ã‚‰ã‚¢ã‚¤ãƒ†ãƒ ãŒä¸¦ã¹ã‚‰ã‚Œã¾ã™ã€‚flex-end ã‚’è¨å®šã™ã‚‹ã“ã¨ã§æœ«å°¾ã‹ã‚‰ã€center ã‚’è¨å®šã™ã‚‹ã“ã¨ã§ä¸å¤®ã«ä¸¦ã¹ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚
ã¾ãŸã€space-between を使用ã—ã¦ã€ã‚¢ã‚¤ãƒ†ãƒ ã‚’é…ç½®ã—ãŸã‚ã¨ã®æ®‹ã‚Šã®ä½™ç™½ã®ã™ã¹ã¦ã‚’アイテム間ã§å‡ç‰ã«æŒ¯ã‚Šåˆ†ã‘られã€ã“れã«ã‚ˆã£ã¦åŒã˜å¹…ã®ç©ºç™½ãŒãれãžã‚Œã‚¢ã‚¤ãƒ†ãƒ ã®é–“ã«æŒ¿å…¥ã•れã¾ã™ã€‚å„アイテムã®å·¦å³ã«åŒã˜ã ã‘ã®ä½™ç™½ã‚’空ã‘ã‚‹ã«ã¯ã€space-around を使用ã—ã¾ã™ã€‚space-around ã§ã¯ã€ã‚³ãƒ³ãƒ†ãƒŠãƒ¼ã®ä¸¡ç«¯ã«ã¯ã€ã‚¢ã‚¤ãƒ†ãƒ ã®é–“éš”ã®åŠåˆ†ã®å¤§ãã•ã®ä½™ç™½ãŒè¨ã‘られã¾ã™ã€‚両端ã«ã‚‚åŒã˜ã ã‘ã®ä½™ç™½ã‚’è¨ã‘ã‚‹ã«ã¯ã€space-evenly を使用ã—ã¾ã™ã€‚ã“ã®å ´åˆã¯ã‚³ãƒ³ãƒ†ãƒŠãƒ¼ã®ä¸¡ç«¯ã«ãƒ•ルサイズ (アイテムã®é–“éš”ã¨åŒã˜å¤§ãã•) ã®ä½™ç™½ãŒè¨ã‘られã¾ã™ã€‚
ライブサンプルã§ã€ä»¥ä¸‹ã® justify-content ã®å€¤ã‚’試ã—ã¦ã¿ã¾ã—ょã†ã€‚
startendleftrightnormalflex-startflex-endcenterspace-aroundspace-betweenspace-evenlystretch
<div class="box">
<div>One</div>
<div>Two</div>
<div>Three</div>
</div>
.box > * {
border: 2px solid rgb(96 139 168);
border-radius: 5px;
background-color: rgb(96 139 168 / 0.2);
}
.box {
border: 2px dotted rgb(96 139 168);
display: flex;
justify-content: flex-start;
}
フレックスコンテナー内ã®ã‚¢ã‚¤ãƒ†ãƒ ã®é…ç½®ã®è¨˜äº‹ã§ã¯ã€ã“れらã®ãƒ—ãƒãƒ‘ティãŒã©ã®ã‚ˆã†ã«å‹•作ã™ã‚‹ã®ã‹æ·±ãç†è§£ã™ã‚‹ãŸã‚ã«ã€ã‚ˆã‚Šè©³ç´°ã«è¿°ã¹ã¦ã„ã¾ã™ã€‚ã—ã‹ã—上述ã®ç°¡æ½”ãªä¾‹ã§ã‚‚ã»ã¨ã‚“ã©ã®ç”¨é€”ã§å½¹ã«ç«‹ã¤ã§ã—ょã†ã€‚
justify-items
justify-items プãƒãƒ‘ティã¯ã€ãƒ•レックスボックスレイアウトã§ã¯ç„¡è¦–ã•れã¾ã™ã€‚
place-items 㨠place-content
place-items プãƒãƒ‘ティ㯠align-items 㨠justify-items ã®ä¸€æ‹¬æŒ‡å®šãƒ—ãƒãƒ‘ティã§ã™ã€‚フレックスコンテナーã«è¨å®šã™ã‚‹ã¨ã€é…ç½®ã¯è¨å®šã•れã¾ã™ãŒä½ç½®ãžã‚ãˆã¯è¨å®šã•れãšã€ justify-items ã¯ãƒ•レックスボックスã§ã¯ç„¡è¦–ã•れã¾ã™ã€‚
別ãªä¸€æ‹¬æŒ‡å®šãƒ—ãƒãƒ‘ティã¨ã—㦠place-content ãŒã‚りã€ã“れ㯠align-content プãƒãƒ‘ティ㨠justify-content プãƒãƒ‘ティを定義ã—ã¾ã™ã€‚ align-content プãƒãƒ‘ãƒ†ã‚£ã¯æŠ˜ã‚Šè¿”ã—ã®ã‚るフレックスコンテナーã«ã®ã¿åŠ¹æžœãŒã‚りã€ãƒ•レックスコンテナー内ã®ã‚¢ã‚¤ãƒ†ãƒ ã®é…ç½®ã§è§£èª¬ã—ã¦ã„ã¾ã™ã€‚
次ã®ã‚¹ãƒ†ãƒƒãƒ—
ã“ã®è¨˜äº‹ã§ã€ãƒ•レックスボックスã®åŸºæœ¬çš„ãªç‰¹å¾´ã«ã¤ã„ã¦ã®ç†è§£ãŒã§ããŸã¨æ€ã„ã¾ã™ã€‚次ã®è¨˜äº‹ã§ã¯ãƒ•レックスボックスã¨ä»–ã®ãƒ¬ã‚¤ã‚¢ã‚¦ãƒˆæ–¹æ³•ã®é–¢ä¿‚を見ã¦ã„ãã¾ã™ã€‚