📚

【CSS】Flexboxの「初期値」と「軸」をやさしく整理する

に公開

「なぜかアイコンが潰れる」「書いた覚えがないのに高さが揃っている」
Flexboxを使っていると、こんな挙動に戸惑うことは少なくありません。
その原因の多くは、 Flexboxにあらかじめ用意されている「初期値」と「軸の考え方」 にあります。

この記事では、Web制作で必ず使うFlexboxについて、ブラウザが最初から決めているルールを順番に整理します。

1. レイアウト全体を決める「親(コンテナ)」の初期値

display: flex; を指定した瞬間、親要素には以下のルールが自動的に適用されます。
自分で書いていなくても、最初から有効になっている設定です。

プロパティ 初期値 意味・挙動
flex-direction row **主軸を「横」**にする。左から右へ並ぶ。
flex-wrap nowrap 折り返さない。1行に収まろうとする。
justify-content flex-start 主軸方向の左寄せに配置する。
align-items stretch 交差軸方向いっぱいに伸びる。高さを揃える。

👉「何も指定していないのに横並びになる」「高さが揃う」のは、この初期値が原因です。

2. 要素ごとの動きを決める「子(アイテム)」の初期値

次に、Flexboxの中に入る 子要素(フレックスアイテム) の初期値です。
ここでは、それぞれのプロパティが 主軸か交差軸のどちらを担当するか が重要になります。

分類 プロパティ 初期値 役割・意味(分かりやすく)
主軸(横並びなら幅) flex-grow 0 余白があっても広がらない。自分から大きくはならない。
主軸(横並びなら幅) flex-shrink 1 親の幅が足りないとき、自分が縮んで調整役になる
主軸(横並びなら幅) flex-basis auto 基準となるサイズwidth や中身の大きさを元に決まる。
交差軸(横並びなら高さ) align-self auto 親の指定に従う。通常は align-items: stretch と同じ挙動になる。

👉 アイコンや画像が潰れるのは、flex-shrink: 1 が初期値だから、というケースがよくあります。

3. 最重要ポイント:「幅」か「高さ」かは“軸”で決まる

Flexboxでは、どのプロパティが「幅」を扱い、どれが「高さ」を扱うかは軸次第です。

flex-direction: row; (デフォルト)のとき

  • flex- 系プロパティ = 「横幅」 のコントロール
  • align- 系プロパティ = 「高さ」 のコントロール

flex-direction: column(縦並び)のとき

  • flex- 系プロパティ = 「高さ」 のコントロール
  • align- 系プロパティ = 「横幅」 のコントロール

👉 プロパティ自体の意味は変わりません。
「どの軸に作用しているか」だけが入れ替わる、と理解すると混乱しにくくなります。

まとめ

  • Flexboxの挙動は「初期値」と「軸」を知ると一気に理解しやすくなる
  • 思わぬ縮みや揃いは、ほとんどが初期値の影響
  • 「今、主軸はどっち?」を常に意識するのが最大のコツ

Flexboxで迷ったら、まずは軸と初期値を疑うところから始めてみてください。

Discussion