flex-basisプロパティは、フレックスコンテナ内のアイテムの基本幅を指定する際に使用します。
必ず指定した幅で表示されるわけではなく、他の指定との兼ね合いでフレックスコンテナ内におさまるように自動調整されます。
ただし、flex-shrinkプロパティの値に0を指定したアイテムは縮まないため、
flex-basisプロパティの指定次第ではフレックスコンテナからはみ出す場合があります。
尚、
flex-growプロパティ・
flex-shrinkプロパティ・
flex-basisプロパティについては、
各プロパティで個別に指定するのではなく、
これら3つの値をまとめて指定できるflexプロパティを使用することが推奨されています。
ul.sample_menu {
display:-webkit-flex;
display:flex;
width:100%;
list-style-type:none;
margin:0; padding:0;
}
ul.sample_menu a {
display:block;
margin:2px; padding:10px; font-size:10px;
background-color:#66cc99; color:#ffffff;
text-align:center;
text-decoration:none;
}
<div>数値指定に矛盾が無い場合</div>
<ul class=”sample_menu”>
<li style=”flex-basis:50%;”><a href=”#”>メニュー1</a></li>
<li style=”flex-basis:20%;”><a href=”#”>メニュー2</a></li>
<li style=”flex-basis:20%;”><a href=”#”>メニュー3</a></li>
<li style=”flex-basis:10%;”><a href=”#”>メニュー4</a></li>
</ul>
<div>数値指定に矛盾が有るが、親要素内におさまる</div>
<ul class=”sample_menu”>
<li style=”flex-basis:50%;”><a href=”#”>メニュー1</a></li>
<li style=”flex-basis:50%;”><a href=”#”>メニュー2</a></li>
<li style=”flex-basis:50%;”><a href=”#”>メニュー3</a></li>
<li style=”flex-basis:10%;”><a href=”#”>メニュー4</a></li>
</ul>
<div>大きな値を指定しても、親要素内におさまる</div>
<ul class=”sample_menu”>
<li style=”flex-basis:800px;”><a href=”#”>メニュー1</a></li>
<li style=”flex-basis:600px;”><a href=”#”>メニュー2</a></li>
<li style=”flex-basis:400px;”><a href=”#”>メニュー3</a></li>
<li style=”flex-basis:100px;”><a href=”#”>メニュー4</a></li>
</ul>
flex …… フレックスコンテナ内のアイテムの幅についてまとめて指定する
flex-basis …… フレックスコンテナ内のアイテムの基本幅を指定する
flex-shrink …… フレックスコンテナ内のアイテムの縮み方の比率を指定する
flex-grow …… フレックスコンテナ内のアイテムの伸び方の比率を指定する