flex-flowプロパティは、フレックスコンテナ内のアイテムの配置方向と折り返し方法をまとめて指定する際に使用します。
flex-directionプロパティ・
flex-wrapプロパティの値を、flex-flowプロパティ一つでまとめて指定できるので便利です。
flex-directionプロパティの値と
flex-wrapプロパティの値の組み合わせ次第で、フレックスアイテムの(おそらく全ての)配置・並び順パターンを制御することができます。
flex-directionプロパティの値がrow | row-reverse | column | column-reverse、
flex-wrapプロパティの値がnowrap | wrap | wrap-reverseですから、理論上は12パターンの配置・並び順を指定し分けることができるはずです。
以下に、それぞれの値の指定内容について確認します。
flex-directionプロパティの値では、フレックスコンテナ内のアイテムの配置方向を指定します。
フレックスアイテムの配置方向について、左から右、右から左、上から下、下から上という具合に制御できます。
初期値はrowで、フレックスアイテムは左から右へ並びます。
flex-wrapプロパティの値では、フレックスコンテナ内のアイテムの折り返し方法を指定します。
フレックスアイテムの折り返しの有無、折り返す場合の折り返し行の積み上げ方向を制御できます。
つまり、折り返し行を上から下へ並べるのか、下から上へ並べるのかを指定できます。
初期値はnowrapで、フレックスアイテムは折り返しません。
uul.sample_menu {
display:-webkit-flex;
display:flex;
flex-wrap:wrap-reverse;
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>flex-flow:row nowrap; を指定</div>
<ul class=”sample_menu” style=”flex-flow:row nowrap;”>
<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:50%;”><a href=”#”>メニュー4</a></li>
</ul>
<div>flex-flow:row wrap; を指定</div>
<ul class=”sample_menu” style=”flex-flow:row wrap;”>
<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:50%;”><a href=”#”>メニュー4</a></li>
</ul>
<div>flex-flow:row wrap-reverse; を指定</div>
<ul class=”sample_menu” style=”flex-flow:row wrap-reverse;”>
<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:50%;”><a href=”#”>メニュー4</a></li>
</ul>
<br><br>
<div>flex-flow:row-reverse nowrap; を指定</div>
<ul class=”sample_menu” style=”flex-flow:row-reverse nowrap;”>
<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:50%;”><a href=”#”>メニュー4</a></li>
</ul>
<div>flex-flow:row-reverse wrap; を指定</div>
<ul class=”sample_menu” style=”flex-flow:row-reverse wrap;”>
<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:50%;”><a href=”#”>メニュー4</a></li>
</ul>
<div>flex-flow:row-reverse wrap-reverse; を指定</div>
<ul class=”sample_menu” style=”flex-flow:row-reverse wrap-reverse;”>
<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:50%;”><a href=”#”>メニュー4</a></li>
</ul>
<br><br>
<div>flex-flow:column nowrap; を指定</div>
<ul class=”sample_menu” style=”flex-flow:column nowrap;”>
<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:50%;”><a href=”#”>メニュー4</a></li>
</ul>
<div>flex-flow:column wrap; を指定</div>
<ul class=”sample_menu” style=”flex-flow:column wrap;”>
<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:50%;”><a href=”#”>メニュー4</a></li>
</ul>
<div>flex-flow:column wrap-reverse; を指定</div>
<ul class=”sample_menu” style=”flex-flow:column wrap-reverse;”>
<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:50%;”><a href=”#”>メニュー4</a></li>
</ul>
<br><br>
<div>flex-flow:column-reverse nowrap; を指定</div>
<ul class=”sample_menu” style=”flex-flow:column-reverse nowrap;”>
<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:50%;”><a href=”#”>メニュー4</a></li>
</ul>
<div>flex-flow:column-reverse wrap; を指定</div>
<ul class=”sample_menu” style=”flex-flow:column-reverse wrap;”>
<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:50%;”><a href=”#”>メニュー4</a></li>
</ul>
<div>flex-flow:column-reverse wrap-reverse; を指定</div>
<ul class=”sample_menu” style=”flex-flow:column-reverse wrap-reverse;”>
<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:50%;”><a href=”#”>メニュー4</a></li>
</ul>
<br><br>
flex-flow …… フレックスコンテナ内のアイテムの配置方向と折り返し方法をまとめて指定する
flex-direction …… フレックスコンテナ内のアイテムの配置方向を指定する
flex-wrap …… フレックスコンテナ内のアイテムの折り返し方法を指定する
order …… フレックスコンテナ内のアイテムの表示順序を指定する