CSS Gridレイアウト徹底解説|基本から応用までの完全ガイド


1. グリッドレイアウトとは?

CSS Gridレイアウトは、Webデザインにおいて要素を行(row)と列(column)の2軸で整列させるための強力なレイアウトシステムです。複雑なデザインも直感的かつ効率的に構築できるため、近年のWebデザインで頻繁に活用されています。

Flexboxとの違い

  • Grid:2次元レイアウト(行と列)に適している
  • Flexbox:1次元レイアウト(行か列のどちらか)に適している

2. グリッドレイアウトの基本構造

グリッドレイアウトを使用するには、親要素に display: grid; を指定し、子要素の配置を指定します。

例:2列の基本レイアウト

.container {
  display: grid;
  grid-template-columns: 1fr 1fr; /* 2列 */
  gap: 20px; /* 要素間の余白 */
}

<div class="container">
  <div>Item 1</div>
  <div>Item 2</div>
</div>

3. グリッドの主要プロパティ

grid-template-rows / grid-template-columns

  • 行と列のサイズを指定します。
  • fr(フラクション)単位を使用すると、スペースが自動的に分配されます。
.container {
  grid-template-columns: 1fr 2fr 1fr; /* 3列のレイアウト */
}

gap

行や列の間隔を指定します。

.container {
  gap: 10px 20px; /* 行間10px、列間20px */
}

視覚的にエリアを指定できるプロパティ。

.container {
  grid-template-areas:
    "header header"
    "sidebar main"
    "footer footer";
}

.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
.footer { grid-area: footer; }

4. 実践的なレイアウト例

2列レイアウト

.container {
  grid-template-columns: 1fr 2fr;
}

3列レイアウト

.container {
  grid-template-columns: repeat(3, 1fr);
}

カード型レイアウト

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

5. レスポンシブデザインへの応用

minmax()repeat() を使用することで、レスポンシブ対応がより簡単になります。

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

6. よくあるトラブルと解決法

問題:要素がズレるgrid-template-rows または grid-template-columns の指定が不足している可能性があります。

問題:overflow による崩れ → minmax() の活用で回避できます。


7. おすすめのCSSグリッドジェネレーター


8. コードサンプル

4カラムのグリッドレイアウト例

<div class="container">
  <div>Item 1</div>
  <div>Item 2</div>
  <div>Item 3</div>
  <div>Item 4</div>
</div>

.container {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 15px;
}

9. まとめ

CSS Gridは、効率的で柔軟なレイアウト設計が可能な強力なツールです。この記事で紹介した基本から応用までのテクニックを活用し、快適なWebデザインを目指しましょう!