flexレイアウトの第3回です。前回までが基本の内容でしたので、ここから少しずつ発展した内容になります。
前回、前々回は以下のリンクから。
flexアイテムを縦並びにするflex-direction
flexを指定したボックスの子要素は横並びですが、これを縦並びに変更するプロパティがflex-directionです。
縦に並べるのだったら別にflexを指定する必要は無いのではと思われそうですが、子要素を等幅・等間隔など一括でレイアウトを整えられるのがflexならではの特徴です。たとえばサイド固定のナビゲーションメニューを設置するときなどに役立ちます。
flex-directionの値に” column ” とすれば縦並び。初期値は” row ” の横並びです。
縦並びのときはjustify-content、align-itemsの方向も変わる
flexアイテムが縦方向になったとき、横方向の間隔を指定していたjustify-content は縦方向の間隔に。
おなじく、縦方向の大きさや間隔を指定していたalign-items(align-self)やalign-content は横方向の指定に変わります。
横並びが縦並びになるので、そのまま向きが変わると素直に理解すれば大丈夫でしょう。
レスポンシブデザインで、スマホでは縦並び/タブレット以上で横並び のように変化させるときは注意です。
/* 共通設定 */
div{
display: flex;
width: 100%;
height: 250px;
flex-wrap: wrap;
justify-content: space-between;
align-content: center;
}
上サンプルは横並び(flex-direction:row)、下サンプルは縦並び(flex-direction: column)に設定しています。
flexアイテムを逆順に並べる -reverse
また、それぞれに” -reverse “をつけると、逆順に並びます。
row-reverse とすれば、逆順の横並び。
column-reverse とすれば逆順の縦並びです。
#{
flex-direction: row ; 横並び(初期値)
flex-direction: column ; 縦並び
flex-direction: row-reverse ; 逆順の横並び
flex-direction: column-reverse ; 逆順の縦並び
}
flex-flow
個人的にはあまり使いませんが、こんなプロパティもあるよということでflex-flowプロパティをご紹介しておきます。使いこなせると便利です。
flex-flowプロパティを使うと、flex-wrapとflex-direction を一括で指定できます。(例: flex-flow: row wrap ;)
flex-direction の値が、row ・row-reverse ・column ・column-reverse の4種類。
flex-wrap の値が、 wrap ・nowrap ・wrap-reverse の3種類あるので、12通りの指定ができます。
flexアイテムの順番を入れ替える orderプロパティ
flexアイテムの並び順を指定し入れ替えることができます。
order: 1 ;が先頭。以下2,3,、、と続きます。
でも載せたサンプルですが、これはflex-direction:column で縦並び & 全てのアイテムにorder:3を指定した上で、クリックされたアイテムにだけorder:1をつけることで並び替えをしています。(order:2 は白線)
See the Pen CSS moving list radio button by Takashi Abe (@TakeshiAbe) on CodePen.
今回はここまでです。
あとは伸縮関係のプロパティ(grow shrink flex basis)が残っているので、次回が最後の予定です。