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 実装と再接続設計 |