CSSのgridプロパティでグリッドレイアウトを構築し、複雑なデザインを効率的に実現する方法をわかりやすく解説

スポンサーリンク

CSSのgridプロパティは、複数の要素をグリッド状にレイアウトするための強力なツールです。行や列のサイズ、間隔、位置を細かく指定でき、複雑なレイアウトにも柔軟に対応できます。以下に主要な値とその効果をリストで示し、その後に各値に対する表示例を詳しく解説します。

スポンサーリンク

gridプロパティの値とその効果の一覧

  • grid-template-columns: 1fr 1fr; – 2列の等分の幅でグリッドを作成します。
  • grid-template-columns: 1fr 1fr 1fr; – 3列の等分の幅でグリッドを作成します。
  • grid-template-columns: 100px 50px; – 最初の列は100px、2番目の列は50pxの固定幅でグリッドを作成します。
  • grid-template-columns: auto auto; – 要素の内容に応じて自動的に列の幅を調整します。
  • grid-template-columns: 50px auto; – 最初の列は50px固定、2番目の列は自動調整されます。

注意点や関連情報

gridプロパティは、グリッドコンテナ内でのみ機能します。通常のフレックスボックスとは異なり、行と列の配置を同時に制御することができるため、複雑なレイアウトが可能です。fr単位は、利用可能なスペースの割合を示す単位で、例えば1frと指定すると、要素が均等に割り振られます。

gridプロパティが効かない時の原因と対策

gridプロパティが正しく指定されていない

gridプロパティは、CSSグリッドレイアウトで行(rows)や列(columns)のサイズ、配置、ギャップを一括して指定するためのプロパティですが、誤った形式で指定すると効果が反映されません。
対策: gridプロパティを正しい形式で指定しているか確認しましょう。例えば、grid: "100px 1fr / auto 200px";のように行と列のサイズを正しく指定します。特に、行と列の分割や比率を/で区切る必要があります。

グリッドアイテムの配置が不適切

グリッドアイテム(子要素)がグリッドに正しく配置されていない場合、レイアウトが崩れることがあります。特に、grid-columngrid-rowで指定する際に、範囲やサイズが正しくないと問題が発生します。
対策: 各グリッドアイテムの位置指定(例: grid-column: 1 / 3;grid-row: 2 / 4;)が正しいか確認します。また、アイテムが指定されたエリアに配置されているか、指定された位置に正しく表示されるか確認してください。

共通するCSSコード

<style>
    .css-sample-container {
      display: grid;
      width: 100%;
      background-color: #f9f9f9;
      padding: 20px;
      border: 1px solid #ccc;
    }

    .css-sample-item {
      background-color: #cce7ff;
      border: 1px solid #99ccff;
      padding: 20px;
      text-align: center;
    }
  </style>
  

grid-template-columns: 1fr 1fr

2列の等分の幅でグリッドを作成します。各列は同じ幅で、柔軟に対応できるグリッドレイアウトです。

HTMLコード

<div class="css-sample-container css-sample-grid-2x2">
    <div class="css-sample-item">1</div>
    <div class="css-sample-item">2</div>
    <div class="css-sample-item">3</div>
    <div class="css-sample-item">4</div>
  </div>
  

CSSコード

<style>
    .css-sample-grid-2x2 {
      grid-template-columns: 1fr 1fr;
      grid-template-rows: auto auto;
    }
  </style>
  

表示結果

1
2
3
4

grid-template-columns: 1fr 1fr 1fr

3列の等分の幅でグリッドを作成します。均等な幅で複数の列を表示したい場合に便利です。

HTMLコード

<div class="css-sample-container css-sample-grid-3x1fr">
    <div class="css-sample-item">1</div>
    <div class="css-sample-item">2</div>
    <div class="css-sample-item">3</div>
  </div>
  

CSSコード

<style>
    .css-sample-grid-3x1fr {
      grid-template-columns: 1fr 1fr 1fr;
    }
  </style>
  

表示結果

1
2
3

grid-template-columns: 100px 50px

1列目は100px、2列目は50pxの固定幅でグリッドを作成します。固定された列幅が必要な場合に便利です。

HTMLコード

<div class="css-sample-container css-sample-grid-100px-50px">
    <div class="css-sample-item">1</div>
    <div class="css-sample-item">2</div>
    <div class="css-sample-item">3</div>
    <div class="css-sample-item">4</div>
  </div>
  

CSSコード

<style>
    .css-sample-grid-100px-50px {
      grid-template-columns: 100px 50px;
    }
  </style>
  

表示結果

1
2
3
4

grid-template-columns: auto auto

要素の内容に応じて自動的に列の幅を調整します。内容量に応じて柔軟にサイズが変化するため、可変的な要素に適しています。

HTMLコード

<div class="css-sample-container css-sample-grid-auto">
    <div class="css-sample-item">1</div>
    <div class="css-sample-item">2</div>
  </div>
  

CSSコード

<style>
    .css-sample-grid-auto {
      grid-template-columns: auto auto;
    }
  </style>
  

表示結果

1
2

grid-template-columns: 50px auto

最初の列を50pxに固定し、2列目は自動的に調整されます。この設定は、特定の要素を固定したい場合に便利です。

HTMLコード

<div class="css-sample-container css-sample-grid-50px-auto">
    <div class="css-sample-item">1</div>
    <div class="css-sample-item">2</div>
  </div>
  

CSSコード

<style>
    .css-sample-grid-50px-auto {
      grid-template-columns: 50px auto;
    }
  </style>
  

表示結果

1
2

まとめ

  • gridプロパティを使うと、複雑なレイアウトを簡単に作成できます。
  • 列や行の幅は、固定値、割合、または自動調整で柔軟に設定可能です。
  • フレックスボックスと異なり、gridは2次元のレイアウト(縦と横の配置)を簡単に管理できます。
  • 要素間の余白や列の幅をプロパティで細かく制御できるため、用途に合わせたレイアウトを実現します。