CSS: CSS Gridコンテナ

最終更新:2026-10-13

CSS Gridは強力な2次元レイアウトシステムで、行と列を同時に制御できます。

この節のプロパティ: grid-template-columns grid-template-rows gap grid-template-areas

1. Gridコンテナのプロパティ

(1) 早見表

プロパティ 値 用途
display: grid — Gridコンテナを作成
grid-template-columns 100px 1fr 2fr、repeat(3, 1fr) 列の定義
grid-template-rows 100px auto、repeat(3, 100px) 行の定義
gap 10px、10px 20px アイテム間のギャップ
grid-template-areas "header header" "main aside" 名前付きグリッドエリア

2. fr単位

fr単位は残りのスペースを比例的に分配:

▶ サンプル

▶ 試してみよう

3. repeat()

repeat()関数は繰り返しを削減:

▶ サンプル

▶ 試してみよう

4. minmax() + auto-fill/auto-fit

列数を自動調整するレスポンシブグリッドを作成:

▶ サンプル

▶ 試してみよう

auto-fillとauto-fitの違い:


5. grid-template-areas

名前付きエリアでレイアウトを定義:

▶ サンプル

▶ 試してみよう

この節のプロパティ: grid-template-columns grid-template-rows gap grid-template-areas

❓ よくある質問

Q GridとFlexboxはどうやって選べばいいですか?
A 1次元(単一行または列)にはFlexboxを使用し、2次元(行と列を同時制御)にはGridを使用します。ほとんどのページは両方を使用します:ページ全体のスケルトンにGrid、ローカルの配置にFlexbox。1つのページで両方を使用するのは完全に正常です。
Q fr単位とパーセントの違いは何ですか?
A frは残りのスペースを分配し、パーセントは合計幅を分配します。gapがある場合、frは比率を計算する前にgapを自動的に差し引きますが、パーセントはそうしません。1fr 1fr 1frとgapがあっても完璧な3分割ですが、33.33% 33.33% 33.33%はオーバーフローします。
Q grid-template-areasの使い方は?
A 名前付きエリアでレイアウトを定義します:grid-template-areas: "header header" "sidebar main" "footer footer";、その後grid-area: headerで子要素を割り当てます。レイアウトを変更するには、文字列テンプレートを調整するだけで、子要素を再配置する必要はありません。

📖 まとめ

📝 練習問題

基本

  1. 3×3のグリッドコンテナを作成し、各セル100px×100px、gap10pxにしてください。
  2. 1fr単位で「2カラム」レイアウト(左1fr、右3fr)を作成してください。

中級

  1. repeat(auto-fill, minmax(150px, 1fr))で自動適応カードグリッドを作成し、ブラウザのサイズを変更して列の変化を確認してください。
  2. 「古典的な3行2カラム」レイアウトを作成してください:ヘッダー(2列にまたがる)、左メニュー、右コンテンツ、フッター(2列にまたがる)。

チャレンジ

  1. レスポンシブ画像ギャラリーを作成してください:デスクトップ4列、タブレット2列、モバイル1列、auto-fill + minmaxを使用。
  2. grid-template-areasで完全なブログレイアウト(ヘッダー、ナビゲーション、メインコンテンツ、サイドバー、フッター)を作成してください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%