CSS辞書
比較記事一覧に戻る

Flexbox と Grid の違い(使い分け)

TL;DR — ひとことで言うと

1方向の並び(ナビ、ボタン列、中央寄せ)はflex、行と列を同時に制御するレイアウト(カード一覧、ページ骨格)はgrid。「デザインが表・格子に見えるならgrid」が目安です。

比較表

観点FlexboxGrid
次元1次元(行または列の流れ)2次元(行と列を同時に定義)
サイズの主導権コンテンツ主導(中身に応じて伸縮)レイアウト主導(先にトラックを定義して流し込む)
典型用途ヘッダー内の横並び、ボタングループ、中央寄せカードグリッド、ページ全体の骨格、フォームの整列
子孫の整列入れ子のflexが増えがちgrid-template-areasやsubgridで深い整列も1つで管理
gap対応(全ブラウザ)対応

使い分けの指針

迷ったら「行と列の両方を揃えたいか」で判断します。両方ならgrid、片方ならflex。flexの入れ子が3段以上になったら、gridで書き直せないか疑うのが良いサインです。両者は排他ではなく、grid骨格の中の部品にflexを使うのが実務の標準形です。

🤖 AIがよくやる取り違え

AIはgridで一発のレイアウトをflexの入れ子で組みがちです。「gridで書き直せないか」を一度聞くだけでコードが大幅に簡潔になることがあります。

それぞれの詳しい解説