flex boxについて(その2)
目次
はじめに
flex box
についてまとめています。
以下の記事の続きです。
前回はflex box
の基本的な使い方と、親要素に指定できるプロパティについてまとめました。
今回は子要素に指定できるプロパティについてまとめます。
子要素に指定できるプロパティ
これから紹介するプロパティに関して、親要素にdisplay: flex;
が指定されていることが必須条件。
order ・・・ 子要素の順番
order
を指定することで子要素を並び替えられる。
初期値は0
。マイナスの値も指定可能です。
.a { order: 1; } .b { order: 2; } .c { order: -1; }
どのサイトをみても分かりづらかったのですが、子要素がいくつあろうと全ての子要素の初期値は0
です。
たとえば以下のように一つ目の子要素にorder:1;
を指定した場合、他の子要素は0
なのでその後ろに移動します。
flex-grow ・・・ 子要素の伸びる比率
親要素にスペースが余っている場合、子要素をどの程度伸びるかを指定できます。
初期値は0
。マイナス値は使用できません。
.a { flex-grow: 1; } .b { flex-grow: 2; } .c { flex-grow: 3; }
flex-grow
の計算方法は、指定した数値の合計で、あまりのスペースを割っているようです。
目で見てわかる範疇でもなさそうなので、感覚をつかんで確認しながら使うしかないかなーという印象。
flex-shrink ・・・ 子要素の縮む比率
flex-grow
とは逆でスペースが無く、全ての子要素が入りきらない場合にどの程度縮めるかを指定できます。
初期値は1
。マイナス値は使用できません。
.a { flex-shrink: 1; } .b { flex-shrink: 2; } .c { flex-shrink: 3; }
このあたりは計算方法がなかなかややこしいので試しながら使って行くしかなさそう。
flex-box
の計算について、2016年の記事ですが以下のブログにわかりやすく書かれていました。
flex-basis ・・・ 子要素のベースとなる横幅を指定
widthに近いイメージです。
初期値はauto
。pxや%の指定も可能です。
.a { flex-basis: auto; } .b { flex-basis: 100px; } .c { flex-basis: 80%; }
flex ・・・ flex-grow、flex-shrink、flex-basisをまとめて指定
.a { flex: 2 1 20%; }
align-self ・・・ 子要素の垂直方向の位置
align-items
よりこちらが優先される。
名前 | 説明 |
---|---|
auto(初期値) | 親要素の align-items の値を継承 |
stretch | 親要素の高さ、または一番コンテンツの多い子要素に合わせる |
flex-start | 上揃え |
flex-end | 下揃え |
center | 中央揃え |
baseline | ベースラインで揃える |
以上です。
まだ細かい仕様など、書けていないものもあるのでそちらもいつかまとめたいですね。