CSS Gridジェネレーター

grid-template-columns/rows・justify-items・align-items・gapをGUIで操作しながら、リアルタイムのプレビューを見てCSS Gridレイアウトを試せる無料ツール。生成されたCSSコードはワンクリックでコピー可能。

CSS Gridを触りながら組み立てる

CSS Grid は行と列を同時に扱える2次元のレイアウト方式です。このツールでは `grid-template-columns`/`rows`・`justify-items`・`align-items`・`gap` を画面上で切り替えながら結果を確かめ、できあがったCSSをコピーできます。

**Flexbox との使い分けは「軸が1本か2本か」で考えると迷いません。** 横一列に並べるだけなら Flexbox、**行と列の両方を揃えたい表組みのような配置なら Grid** が向いています。Grid ならではの強みが `fr` という単位で、これは「残りの空間の取り分」を表します。`1fr 2fr` と書けば、余った幅を1対2で分け合います。**そしてもう一つ覚えておきたいのが `repeat(auto-fit, minmax(200px, 1fr))` という書き方です。** これだけで、**メディアクエリを1つも書かずに、幅に応じて列数が自動的に増減するレイアウト**が作れます。

使い方

  1. プリセットから始める 3カラムやヘッダー・サイドバー構成など、よく使う形が用意してあります。
  2. 列と行の定義を変える **`fr` を使うと、残りの空間を比率で分け合えます。**
  3. 配置のプロパティを試す `justify-items` と `align-items` で、各セルの中身の寄せ方を決めます。
  4. 生成されたCSSをコピーする 納得のいく形になったら、そのままコードへ貼り付けられます。

使いこなすためのヒント

  • grid-template-columns: repeat(3, 1fr)のfr単位は「残りスペースを分け合う比率」を表し、pxのような固定値と違って画面幅が変わっても列の比率が保たれます。
  • gapプロパティは行間・列間の余白のみに適用され、marginと違ってグリッドの外側には影響しません。行と列で別の余白(row-gap/column-gap)を指定することも可能です。
  • 「auto」モードのトラックはコンテンツの実際のサイズに合わせて伸縮するため、画像やテキスト量が不定な列・行に向いています。
  • grid-column: span 2のようなアイテム個別のspan指定を使うと、ヘッダーやフッターだけをグリッド全幅に広げるレイアウトが簡単に作れます。
  • 複雑な格子状の配置が必要な場合はGrid、ナビゲーションバーのような1方向の並びで十分な場合はFlexboxが適しています(CSS Flexboxジェネレーターも参照)。

活用シーン

ページ全体の骨組みを作る

**ヘッダー・サイドバー・メイン・フッターの配置は Grid の得意分野です。**

カードを格子状に並べる

**`auto-fit` と `minmax` を組み合わせると、画面幅に応じて列数が自動で変わります。**

入力フォームを整列させる

ラベルと入力欄の列を揃えると、縦のラインが通って読みやすくなります。

Gridを学ぶ

値を変えながら結果を見ると、行と列がどう決まるのかが掴めます。

CSS Gridの用語

グリッドコンテナ
`display: grid` を指定した親要素のことです。この中で行と列が定義されます。
fr
**残りの空間の取り分を表す単位**です。`1fr 2fr` なら、余白を1対2で分け合います。
grid-template-columns
列の並びと幅を定義します。`repeat()` を使うと同じ指定を繰り返せます。
minmax
最小値と最大値を指定する関数です。**`minmax(200px, 1fr)` は「200pxは確保しつつ、余れば広がる」という意味になります。**
auto-fit
入る分だけ列を作る指定です。**`minmax` と組み合わせることで、メディアクエリなしに折り返せます。**
gap
行と列の間に空ける余白です。行方向と列方向を別々に指定することもできます。

よくある質問

行と列の両方を同時にコントロールしたい2次元レイアウト(ページ全体の骨格やダッシュボードなど)にはCSS Gridが適しています。一方、ナビゲーションバーやカードの横並びのように「1方向(行または列)の並び」だけで十分な場合はFlexboxの方がシンプルに書けます。両方を組み合わせて、ページ全体はGrid、コンポーネント内部はFlexboxという使い分けもよく行われます。

frは「fraction(割合)」の略で、コンテナ内の余った空間を指定した比率で分配する単位です。例えばgrid-template-columns: 1fr 2frと指定すると、2列目が1列目の2倍の幅になるよう余白が分配されます。pxのような絶対値と違い、画面サイズが変わっても比率を保ったまま伸縮するのが特徴です。

repeat()は同じパターンのトラックを繰り返し指定するための関数で、repeat(3, 1fr)はgrid-template-columns: 1fr 1fr 1frと書くのと同じ意味になります。列数が多い場合や動的に変わる場合でも、繰り返し回数とトラックサイズの2つの引数だけで簡潔に記述できます。

ホーリーグレイル(聖杯)レイアウトとは、ヘッダー・サイドバー・メインコンテンツ・フッターを組み合わせた、Webデザインで古くから定番とされる画面構成のことです。CSS Grid以前はfloatやテーブルタグを使った複雑な実装が必要でしたが、Gridのgrid-template-areas等を使うことで少ないコードで再現できるようになりました。

grid-column: span Nは、そのアイテムを横方向にN個分のトラック(列)にまたがって配置するプロパティです。例えばヘッダー要素だけをgrid-column: span 3として全列にまたがせることで、他のアイテムは通常のセルに収まりつつヘッダーだけを全幅表示するレイアウトが作れます(grid-rowにも同様にspanを指定できます)。
ツールくん

余談ですが ― Flexboxとは異なる「2次元」を目指したCSS Grid

CSS Grid Layout(正式名称: CSS Grid Layout Module)は、Flexboxが「1方向(行または列)の並び」に特化しているのに対し、行と列を同時に定義できる2次元のレイアウトシステムとして設計されました。W3Cでの標準化は2011年頃から進み、2017年にChrome・Firefox・Safari・Edgeの主要ブラウザで足並みを揃えて実装されたことで、実務での採用が一気に広がりました。

Grid登場以前、ページ全体を「ヘッダー・サイドバー・メインコンテンツ・フッター」という格子状に配置する、いわゆる「ホーリーグレイル(聖杯)レイアウト」は、floatやテーブルタグを使った複雑な回避策でしか実現できませんでした。CSS Gridはgrid-template-columns・grid-template-rows・grid-template-areasといった宣言的なプロパティにより、この定番レイアウトをわずか数行のCSSで組めるようにしました。

現在ではダッシュボードUIや画像ギャラリー、雑誌風のマガジンレイアウトなど、行と列を意識したデザインの多くがCSS Gridで実装されています。ネストしたグリッドの間で親のトラック幅を子が引き継げる「subgrid」も主要ブラウザで対応が進んでおり、より複雑なレイアウトの一貫性を保ちやすくなっています。

実務では「ページ全体の骨格はGrid、コンポーネント内部の要素の並びはFlexbox」という役割分担が定着しつつあります。両者は競合する技術ではなく、1次元の整列と2次元の格子配置という異なる得意分野を持つ補完的なツールであり、1つのページの中で両方を組み合わせて使うのがむしろ標準的な設計パターンとされています。