flexとinline-flexの概要
CSSのレイアウトを柔軟に制御するには、`flex`と`inline-flex`の違いと適材適所な使い方を理解することが重要です。
このページでは、それぞれのプロパティの特徴・動作の違い・よく使われるレイアウト例を、比較表とサンプルコードを交えて紹介します。
また、`inline-block`との違いや、実際のUI設計で役立つポイントも解説しています。
フレックスボックス(display:flex; display:inline-flex;)は簡単に横並びや縦並びのレイアウトが実装できるのでメニューを作る場合や画像を均等に並べたい場合など、様々な場面で重宝します。
- 横並び・縦並びレイアウトを簡単に実装
- 画像やメニューを均等に並べる配置が可能
- 折り返し・水平方向・垂直方向の揃え方の制御
- orderで子要素の並び順変更、align-selfで個別配置
フレックスボックスの属性
| 属性 | 値 | 概要 |
|---|---|---|
| display | flex | block要素のフレックスボックス |
| inline-flex |
`inline-flex`は、`flex`の機能を持ちながらインライン要素として振る舞うプロパティです。 一方、`inline-block`はインライン要素のように横並びになりつつ、幅や高さを指定できる点が特徴です。 両者の違いは、レイアウトの柔軟性と子要素の制御方法にあります。 例えば、`inline-flex`では`justify-content`や`align-items`などのFlexboxの機能が使えるため、より高度な配置が可能です。 |
フレックスボックスに関連する属性一覧
| 属性 | 属性の概要 | 値 | 値の概要 |
|---|---|---|---|
| flex-wrap | 子要素の折り返し指定 | nowrap | 折り返ししない[初期値] |
| wrap | 折り返す | ||
| wrap-reverse | 逆順で折り返す | ||
| justify-content | 水平方向の揃え方を指定 | flex-start | 左寄せ[初期値] |
| flex-end | 右寄せ | ||
| center | 中央寄せ | ||
| space-between | 子要素間の間隔を均等 | ||
| space-around | 左右を含む子要素の間隔を均等 (子要素間は均等で左端右端は子要素間の半分) |
||
| space-evenly | 左右を含む子要素の間隔を完全に均等 | ||
| align-items | 子要素の垂直方向の揃え方を指定 | stretch | 子要素を親要素の高さに合わせる[初期値] |
| flex-start | 上揃え | ||
| flex-end | 下揃え | ||
| center | 上下方向中央揃え | ||
| baseline | 各子要素の1行目のベースライン揃え | ||
| align-content | 折り返した(flex-wrap:wrap)時の 複数行の揃え方(上下方向) を指定 |
stretch | 親要素の高さにストレッチ[初期値] |
| flex-start | 上寄せ。子要素の高さは行ごとに自動 | ||
| flex-end | 下寄せ。子要素の高さは行ごとに自動 | ||
| center | 上下中央寄せ。 子要素の高さは行ごとに自動 |
||
| space-between | 子要素間の隙間を均等。 子要素の高さは行ごとに自動 |
||
| space-around | 上端下端を含む隙間を均等。 (子要素間は均等で上端下端は子要素間の半分) 子要素の高さは行ごとに自動 |
||
| space-evenly | 上下を含む子要素の間隔を完全に均等 | ||
| flex-direction | 子要素の並び順を指定 | row | 左から右 |
| row-reverse | 右から左 | ||
| column | 上から下 | ||
| column-reverse | 下から上 | ||
| gap | 子要素間(上端、下端、左端、右端含まず)の隙間の間隔 | row | gap:4px 32px; /* 行(上下方向)と列(左右方向)の間隔を設定 */ |
フレックスボックスの子要素に指定できる属性一覧
| 属性 | 属性の概要 | 値 | 値の概要 |
|---|---|---|---|
| align-self | 子要素ごとに 垂直方向の位置揃えを指定 |
auto | 親のalign-itemsの値で計算します[初期値] |
| flex-start | 上寄せ | ||
| flex-end | 下寄せ | ||
| center | 上下方向中央寄せ | ||
| stretch | 親要素の高さに合わせる | ||
| baseline | 1行目の文字列のベースライン揃え | ||
| order | 子要素の並び順を指定する | 数字 | order:1; や order:2; 等を指定する 数字が小さい順に子要素が並び替わる |
| flex-grow | 子要素の拡大係数を指定 | 負の値は無効、既定値は 0(フレックスアイテムは伸長しません) | |
| flex-shrink | 子要素の縮小係数を指定 | 既定値は 1 | |
| flex-basis | 子要素の初期の寸法を設定 | auto(既定値)、0、200px、1em、50%、max-content、min-content、fit-content などを指定 | |
| flex | 子要素の拡縮を一括設定 | flex-grow flex-shrink flex-basis |
拡大比[flex-grow] 縮小比[flex-shrink] ベースサイズ[flex-basis] を半角スペース区切りで指定する デフォルト値は flex:0 1 auto; |
