CSS Grid と Flexbox の使い分け

ざっくり言うと

Grid は、コンテナベース
Flexbox は、アイテムベース

Grid は、セルの大きさをコンテナ側で制御する
Flexbox は、セルの大きさをアイテム側の幅・高さに合わせたい

具体的には

Grid は、以下のようなレイアウトを実現したい時。レスポンシブの対応などで、列や行を超えて表示位置をコントロールしたい場合に便利です。

画像3

<div>
  <div>A</div>
  <div>B</div>
  <div>C</div>
</div>

Flexbox でこのようなレイアウトを再現しようとすると、html の構造上の制約を受けてレスポンシブ表示がやりづらくなってしまいます。

画像3

<div>
  <div>
    <div>A</div>
    <div>C</div>
  </div>
  <div>B</div>
</div>

逆に、Flexbox が適しているのはアイテムの大きさが不定・可変な場合です。Grid ではコンテナ側からの決め打ちになってしまうので、アイテムの大きさを柔軟に指定しきれません。

画像3

<div>
  <div>A</div>
  <div>B</div>
  <div>C</div>
  <div>D</div>
  <div>E</div>
  ...
</div>

まとめ

Grid は、縦方向も含めた、2次元的な配置をしたい時
Flexbox は、シンプルに1方向に、1次元的な配置をしたい時

に便利です。

ただ、IE対応が必要でアイテムの数が不定の時は、技術的な理由から Flexbox 使った方がいいです。

この記事が気に入ったらサポートをしてみませんか?