CSS Grid vs Flexbox|どっちを使う?使い分けと実戦レイアウト

CSS レイアウト Grid Flexbox
結論

「1次元(並べるだけ)ならFlexbox」「2次元(行と列を揃える)ならGrid」。迷ったら「要素同士を縦横できれいに整列させたいか」で判断。

使い分けの基準

特徴 推奨される場面
Flexbox (1D) ナビゲーションバー, ボタンの配置, 要素を横(または縦)に並べる
CSS Grid (2D) ページ全体のレイアウト, 複雑なカードグリッド, 雑誌風のデザイン

CSS Gridが輝く瞬間

カード型のリストで、中身の文章量にかかわらず「枠の高さ」を揃えつつ、画面幅に応じて列数を動的に変えたいときはGridが圧倒的に楽です。

.grid-container {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 20px;
}

🏁 この場でCSS Gridを生成する

  

共存させるのが正解

Gridの中にFlexboxを置く、あるいはその逆も全く問題ありません。例えば、サイト全体のレイアウト(ヘッダー、メイン、サイドバー)をGridで組み、ヘッダー内のメニュー項目をFlexboxで並べるといった使い分けが、最もメンテナンス性が高くなります。

関連記事

この記事は フロントエンド・CSS テーマの一環です。あわせて読むと理解が深まる関連記事をまとめました。

トピック記事
CSS Container Queries 完全ガイドCSS Container Queries 完全ガイド|@container・size vs inline-size・コンポーネント単位レスポンシブ
CSSですりガラス(Glassmorphism)を作る方法CSSですりガラス(Glassmorphism)を作る方法|backdrop-filterの使い方
CSSで浮き出るカードを作るCSSで浮き出るカードを作る|きれいなbox-shadowの数値設定
CSSの単位はpxとremどちらが良い?CSSの単位はpxとremどちらが良い?|基準16pxの理由と使い分け
Fluid Typographyの作り方Fluid Typographyの作り方|vwとclampでレスポンシブ対応を自動化
line-height計算 - 読みやすい行間をフォントサイズから算出line-height計算 - 読みやすい行間をフォントサイズから算出
Tailwind CSSでデザインシステムの色を管理する方法Tailwind CSSでデザインシステムの色を管理する方法
色のコントラストチェック色のコントラストチェック|color contrastの使い方と注意点
React SSR Hydration Mismatch 原因と修正React SSR Hydration Mismatch 原因と修正|Next.js・Astro対応ガイド
HTML Popover API 完全ガイドHTML Popover API 完全ガイド|popover・popovertarget・light dismiss・アクセシビリティ
CSS Grid テンプレートCSS Grid テンプレート|grid-template-areas 入門
SSE vs WebSocket 使い分けSSE vs WebSocket 使い分け|EventSource 実装と再接続設計