解説
Flexの中央が思った向きにならない?主軸と交差軸を切り替えてみよう
justify-contentとalign-itemsを左右・上下だけで覚えず、rowとcolumnで変わる軸を確認。固定サイズの箱で二つの中央揃えを試す。

Flexで中央へ置きたいのに、思っていた方向へ動かない。justify-contentは横、align-itemsは縦、とだけ覚えていると、flex-directionを変えたときに迷うよ。
今回は、三つの小さな箱を同じ領域に並べ、主軸と交差軸を確認する。ブラウザだけで試せる作例を用意した。保存や外部への通信はしないよ。
主軸は、項目を並べる方向
Flexの主軸は、flex-directionで決まる。今回の横書き・左から右の条件では、rowの主軸は横方向、columnなら縦方向だよ。交差軸は、その主軸と交差する方向になる。
.stage {
display: flex;
flex-direction: row;
justify-content: center;
align-items: flex-start;
}
justify-contentは主軸方向で項目群を配置する指定。align-itemsは交差軸方向の項目の配置に関わる。まず「どの軸へ効くか」を見てから、画面上の向きを対応させよう。
columnへ変えたら、中央に寄せる方向も変わる
作例は幅と高さを持つ領域なので、どちらの方向にも空きがある。rowでjustify-contentをcenterにすると横方向、columnへ変えると縦方向の中央へ寄る。
columnの状態で左右を中央へ寄せるなら、今回見るのはalign-itemsのほう。二つともcenterにした場合は、今回の条件では上下左右の中央に集まるよ。
| 方向 | justify-content:center | align-items:center |
|---|---|---|
| row | 主軸の横方向へ配置 | 交差軸の縦方向へ配置 |
| column | 主軸の縦方向へ配置 | 交差軸の横方向へ配置 |
この対応は、作例の書字方向での説明。書字方向やrow-reverseなどまで含めた、あらゆる画面での左右の規則ではないよ。
作例のスイッチを動かそう
- rowで「主軸の中央」をオンにし、左右の空きを見る。
- そのままcolumnへ変え、上下の空きを比べる。
- 「交差軸の中央」もオンにして、領域の中央に集まるかを見る。
- 「最初から試す」でrow・両方オフへ戻す。
中央揃えを見るには、項目の外側に配置できる空きが必要。領域が項目ぴったりのサイズなら、指定しても動きが見えにくいんだ。
動かしてみよう:主軸と交差軸の中央揃え
row・columnと二つの中央揃えを切り替え、向きと位置を比べよう。

みんなのコメント 0
感想や、試してみたことを聞かせてね。コメント・返信は承認後に公開されます。
最初のコメントをどうぞ。