一言で言えば: Flexboxの詳細 一次元 軸(行 または 列)、グリッドは 2次元 グリッド(行 と 実際のプロジェクトでは、ペアで動作します。グリッドはページのフレームワークを構築し、フレックスボックスはコンポーネント内の要素を調整します。✨

FlexboxとGridはいつ使うべきですか? ⚖️
display:flexを使用するのは…
要素を 1 つの軸に沿って配置する必要があります(メニュー、ボタン パネル、カード)。
コンテンツが少なく、厳密な列なしで「折り返り」されます。
「場所」に合わせて簡単に適応できることが重要です(センタリング、間隔)。
.toolbar{
display:flex;
align-items:center;
justify-content:space-between;
gap:.75rem;
}display:gridを使用するのは…
必要なグリッド と 行、 と コラム(ランディングページ、ダッシュボード、カタログ)。
明確なグリッドライン、「レール」、繰り返しの領域が重要です。
ブレークポイントでのアダプティブの一貫した制御が必要です。
.layout{
display:grid;
grid-template-columns: 1fr minmax(260px, 3fr) 1fr;
gap: 20px;
}
2025年の新機能は? 🚀
サブグリッドはどこにでもあります。 ネストされたコンポーネントは、親グリッドの線を継承できます。つまり、インデント付きの「クルック」が少なくなります。
共有 最新のデザインシステムでは、グリッド上にフレームワークを構築し、カード、ツールバー、コントロール内にフレックスを適用します。
スマートなサイズ機能。 min()、max()、clamp()、minmax()、fit - content()、およびauto - fit/auto - fillパターンが広く使用されています。
.cards{
display:grid;
grid-template-columns: repeat(auto-fit, minmax(clamp(220px, 28vw, 360px), 1fr));
gap: clamp(12px, 2vw, 24px);
}クイックレシピ 🍳
ページフレーム(グリッド)
.page{
display:grid;
grid-template-rows: auto 1fr auto;
grid-template-columns: minmax(16px,1fr) minmax(0,1040px) minmax(16px,1fr);
}
.header{ grid-column: 1 / -1; }
.main { grid-column: 2; }
.footer{ grid-column: 1 / -1; }コンテンツの幅は限られており、パディングは端の列に「吸収」されます。
カード内(フレックス)
.card{
display:flex;
flex-direction:column;
gap:.6rem;
}
.card__footer{
display:flex;
justify-content:space-between;
align-items:center;
}コンテンツとボタンを1つの軸に沿って簡潔に配置します。
痛みのないサブグリッド🧩
グリッド内のブロックが親と同じ線を「キャッチ」する必要がある場合は、サブグリッドを使用する時です。
.article{
display:grid;
grid-template-columns: 1fr 2fr;
gap: 16px;
}
.article-section{
display:grid;
grid-template-columns: subgrid; /* наследуем колонки родителя */
grid-column: 1 / -1; /* растягиваемся по всей ширине */
}結果: 列の説明の重複が少なく、より予測可能な配置になります。
差異表 📊
基準 | Flexbox | CSS Grid |
|---|---|---|
測定 | 1軸(行/列) | 2軸(行+列) |
複雑なレイアウト | 制限あり | ぴったり |
ネストされたコンポーネント | シンプルで柔軟 | サブグリッドはネストを簡素化します |
学習曲線 | 下 | 少し高いが、より強力 |
典型的なタスク | ナビゲーション、ツールバー、行のコンテンツ | ページフレーム、カタログ、ダッシュボード |
チェックリストの選択📝
要素を1つの軸に沿って配置するだけですか? → Flexbox.
明示的な列/行と予測可能なフレームワークが必要ですか? → Grid.
コンポーネントはグリッド内にあり、その線に従う必要がありますか? → Grid + subgrid.
カタログの素早い適応をご希望ですか? → repeat(auto-fit, minmax(...)) Grid.
ブロック内にスマートスペースとセンタリングが必要ですか? → Flexbox.
よくあるミスとその回避方法 🧯
1つのFlexboxで複雑なレイアウトを組み立てようとする。 フレームにはグリッドを、ディテールにはフレックスを使用してください。
子ブロックでグリッドを複製します。 サブグリッドを適用できるかどうかを確認証してください。
幅をハードコーディングする。 minmax ()、clamp ()、fraction (fr) を使用します。
インデントに溺れる。 グリッド要素間のマージンの代わりにギャップを設定します。
B コディケ 私たちはプログラミングの学習を楽しくわかりやすくします。ステップバイステップでスキルを磨くのに役立つ課題を伴う興味深いコースを用意しています。
また、アクティブな テレグラムチャンネル、ここでは素晴らしいアイデアについて話し合い、経験を共有し、課題を一緒に分析します。学習は有益であるだけでなく、楽しいものになります。
2025年には、「グリッドまたはフレックスボックス」の議論に勝者はありません。両方が必要です。使用してください Grid 構造と Flex ローカルの整列に使用します。さらにサブグリッド、サイズ関数、きちんとしたギャップ管理を追加すると、レイアウトがクリーンで応答性が高く、サポートされます。
グリッド列の設定とフレックスの配置のどちらで、より多くの問題が発生しますか?もっと詳しく知りたいことは何ですか? 🙂
