flexプロパティは、フレックスコンテナ内のアイテムの幅についてまとめて指定する際に使用します。
flex-growプロパティ・
flex-shrinkプロパティ・
flex-basisプロパティ の値を、flexプロパティ一つでまとめて指定できるので便利です。
適用対象となるボックスがフレックスアイテムの場合、そのボックスのサイズの決定に際してflexプロパティの指定が参照されます。
適用対象がフレックスアイテム以外の場合には、flexプロパティの指定は無効となります。
フレックスアイテムとは、フレックスコンテナ内のアイテムのことです。
具体的に言うと、display:flex; を指定したボックスがフレックスボックス、その子要素がフレックスアイテムです。
以下に、それぞれの値の指定内容について確認します。
flex-growプロパティの値では、フレックスコンテナ内のアイテムの伸び方の比率を指定します。
フレックスコンテナの横幅に対して、フレックスコンテナの横幅の合計が短くて余白がある場合、
flex-growプロパティの指定に応じた比率で各フレックスアイテムが自動的に伸ばされて余白が埋められます。
初期値は0です。値が0のままだと、そのフレックスアイテムは伸ばされません。
flex-shrinkプロパティの値では、フレックスコンテナ内のアイテムの縮み方の比率を指定します。
フレックスコンテナの横幅に対してフレックスアイテムの横幅の合計が大きい場合、
flex-shrinkプロパティの指定に応じた比率で各フレックスアイテムが自動的に縮められて、フレックスコンテナの幅に収められます。
初期値は1です。値に0を指定すると、そのフレックスアイテムは縮まなくなります。
flex-basisプロパティの値では、フレックスコンテナ内のアイテムの基本幅を指定します。
必ず指定した幅で表示されるわけではなく、他の指定との兼ね合いでフレックスコンテナ内におさまるように自動調整されます。
初期値はautoです。
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;
}
<p>initialは伸びない/縮む、autoは伸びる/縮む、noneは伸びない/縮まない。という理解で良いと思われます。</p>
<ul class=”sample_menu”>
<li style=”flex:0 1 100px;”><a href=”#”>100ピクセル</a></li>
<li style=”flex:initial;”><a href=”#”>初期値</a></li>
<li style=”flex:auto;”><a href=”#”>自動</a></li>
<li style=”flex:none;”><a href=”#”>なし</a></li>
</ul>
<ul class=”sample_menu”>
<li style=”flex:0 1 1000px;”><a href=”#”>1000ピクセル</a></li>
<li style=”flex:initial;”><a href=”#”>初期値</a></li>
<li style=”flex:auto;”><a href=”#”>自動</a></li>
<li style=”flex:none;”><a href=”#”>なし</a></li>
</ul>
initialは伸びない/縮む、autoは伸びる/縮む、noneは伸びない/縮まない。という理解で良いと思われます。
flex …… フレックスコンテナ内のアイテムの幅についてまとめて指定する
flex-basis …… フレックスコンテナ内のアイテムの基本幅を指定する
flex-shrink …… フレックスコンテナ内のアイテムの縮み方の比率を指定する
flex-grow …… フレックスコンテナ内のアイテムの伸び方の比率を指定する