Flexboxとは、CSSで要素を柔軟(flexible)に配置するためのレイアウト機能です。
横並び・縦並び・中央揃え・間隔調整などを、シンプルな指定で実現できます。
Flexboxを使うには、親要素に次の指定を行います。
.container {
display: flex;
}
この指定をすると、
.container → フレックスコンテナ
という関係になります。

Flexboxを使うと、次のようなレイアウトが簡単にできます。
Flexboxは1本の軸を基準にレイアウトします。
・主軸(main axis)
・交差軸(cross axis)
主軸の向きは flex-direction で決まります。
要素をどの方向に並べるかを指定します。(並び順を変更)
.container {
flex-direction: row;
}
| 値 | 挙動 |
|---|---|
| row | 横並び(左 → 右) ※デフォルト |
| row-reverse | 横並び(右 → 左) |
| column | 縦並び(上 → 下) |
| column-reverse | 縦並び(下 → 上) |
主軸方向の配置方法を指定します。
.container {
justify-content: center;
}
| 値 | 挙動 |
|---|---|
| flex-start | 先頭に寄せる |
| center | 中央揃え |
| flex-end | 末尾に寄せる |
| space-between | 両端揃え(間隔均等) |
| space-around | 各要素の周囲に余白(均等) |
| space-evenly | すべて均等な間隔 |
交差軸方向の揃え方を指定します。
.container {
align-items: center;
}
| 値 | 挙動 |
|---|---|
| stretch | 高さ(幅)を伸ばす ※デフォルト |
| center | 中央揃え |
| flex-start | 上(左)揃え |
| flex-end | 下(右)揃え |
| baseline | 文字のベースライン揃え |
上下左右中央揃えは、Flexboxの定番です。
.container {
display: flex;
justify-content: center;
align-items: center;
}
これだけでOKです。
要素がはみ出したときに折り返すかを指定します。
.container {
flex-wrap: wrap;
}
| 値 | 挙動 |
|---|---|
| nowrap | 折り返さない ※デフォルト |
| wrap | 折り返す |
| wrap-reverse | 逆方向に折り返す |
Flexアイテム同士の間隔を簡単に指定できます。
.container {
gap: 15px;
}
margin を個別に書かなくていいのが便利です。
| 値 | 挙動 |
|---|---|
| gap | 両方行(縦横方向)の間隔 |
| row-gap | 行方向(縦方向)の間隔 |
| column-gap | 列方向(横方向)の間隔 |
子要素がどれくらい伸び縮みするかを指定します。
.item {
flex: 1;
}
これは以下の省略形です。
flex: flex-grow flex-shrink flex-basis;
| 値 | 意味 |
|---|---|
| flex-grow | 余白があったときに伸びる割合 |
| flex-shrink | はみ出すときに縮む割合 |
| flex-basis | 基準となるサイズ |