dev TailwindCSS

TailwindCSS Grid テクニックまとめ|配置パターンと逆引き

TailwindCSS Grid テクニックを6記事で網羅。auto-fit・col-span・row-span・grid-template-areas・fr単位・place-* を使ったダッシュボード/カードレイアウト設計を、シーン別・逆引きで解説します。

TailwindCSS Grid テクニックを 6 つのパターンで整理します。

Grid の基礎クラス(grid-cols-* / grid-rows-*)は理解した。でも実際の画面設計で「どう組み合わせれば?」と詰まってしまった経験ありませんか?

私もダッシュボードや管理画面UIを作る中で、「auto-fit と auto-fill どっち?」「col-span が効かない」「fr で長文が溢れる」と悩んだことがあります。

この記事では、実際のUIシーン別 に Grid 応用テクニックを 6 つのクラス(auto-fit / col-span / row-span / grid-template-areas / fr / place-*)でまとめました。

この記事の使い方

4つの方法で使えます:

  • シーン別から探す → 「シーン別の応用パターン」セクションへ
  • クラス別に学ぶ → 「記事カタログ」セクションへ
  • トラブルから探す → 「逆引きリスト」セクションへ
  • 疑問から探す → 「よくある質問(FAQ)」セクションへ

なお、Flexbox / Grid の 基礎クラス(grid-cols / grid-rows / flex 系)の効かない問題 は、姉妹編 TailwindCSS レイアウト逆引きガイド を参照してください。


シーン別の応用パターン

実際のUIシーン別に、Grid テクニックを組み合わせた解決パターンを5つ紹介します。「作りたいUIが決まっている」場合はこのセクションが起点です。

S1: レスポンシブカードレイアウト

課題: 画面幅に応じてカードの列数を自動変更したい(メディアクエリなし)

解決クラス:

<div class="grid gap-4 grid-cols-[repeat(auto-fit,minmax(240px,1fr))]">
  <!-- カード -->
</div>

ポイント: メディアクエリ不要で滑らかな自動列数変更を実現します。auto-fit は空きカラムを潰してカードを伸ばし、auto-fill は空きカラムを残してカードの指定幅を維持します。一覧UIなら auto-fit、カタログなら auto-fill が定石です。

詳細: auto-fit テクニック三選

TailwindCSS auto-fit テクニック三選 アイキャッチ画像
TailwindCSS auto-fit テクニック三選|レスポンシブグリッドの基本と応用

TailwindCSS auto-fit でレスポンシブグリッドを作る方法をテクニック三選で解説。ブレークポイント不要のカード列数自動調整、auto-fit と auto-fill の使い分け、サイド ...

続きを見る

S2: ダッシュボード(固定サイドバー + 可変メイン)

課題: 左サイドバー240px固定、右メイン領域は画面幅に応じて伸縮

解決クラス:

<div class="grid grid-cols-[240px_1fr] h-screen">
  <aside><!-- サイドバー --></aside>
  <main><!-- メイン --></main>
</div>

ポイント: 任意値構文で固定幅と可変幅を混在できます。grid-cols-N は均等分割しかできませんが、任意値ならサイドバー固定+メイン可変のような非対称レイアウトも自由に組めます。

詳細: fr 単位 テクニック三選

TailwindCSS fr 単位 テクニック三選 アイキャッチ画像
TailwindCSS fr 単位の使い分け|1frの罠・固定+可変・比率指定 完全ガイド

TailwindCSS fr 単位は CSS Grid で残り領域を比率で配分する単位です。固定+可変、比率指定、minmax(0, 1fr) で長文崩れの罠を回避するテクニックを実例付きで解説します ...

続きを見る

S3: 管理画面UI(ヘッダー + サイド + メイン + フッター)

課題: 2次元の領域分けレイアウトを、可読性を重視して組みたい

解決クラス(grid-template-areas 派):

[grid-template-areas:'header_header''sidebar_main''footer_footer']

grid-cols-[240px_1fr] grid-rows-[auto_1fr_auto]"> <header class="[grid-area:header]">...</header> <aside class="[grid-area:sidebar]">...</aside> <main class="[grid-area:main]">...</main> <footer class="[grid-area:footer]">...</footer> </div> -->

<div class="grid h-screen

[grid-template-areas:'header_header''sidebar_main''footer_footer']

grid-cols-[240px_1fr] grid-rows-[auto_1fr_auto]"> <header class="[grid-area:header]">...</header> <aside class="[grid-area:sidebar]">...</aside> <main class="[grid-area:main]">...</main> <footer class="[grid-area:footer]">...</footer> </div>

解決クラス(col-span / row-span 派):

<div class="grid grid-cols-2 grid-rows-3 h-screen">
  <header class="col-span-2">...</header>
  <aside>...</aside>
  <main>...</main>
  <footer class="col-span-2">...</footer>
</div>

ポイント: 領域名で書く grid-template-areas は意図が明確で、md:[grid-template-areas:...] のようなレスポンシブ切替も HTML を二重化せずに実現できます。col-span / row-span は標準クラスで完結し、構文がシンプルです。プロジェクトの保守方針で選択してください。

詳細: grid-template-areas テクニック三選 / col-span テクニック三選 / row-span テクニック三選

TailwindCSS grid-template-areas テクニック三選 アイキャッチ画像
TailwindCSS grid-template-areas|任意値で書くテクニック3選

TailwindCSS grid-template-areas は専用ユーティリティがなく任意値構文で書きます。col-span+row-span 方式との違い、領域名ミスマッチ、レスポンシブ切替の正 ...

続きを見る

TailwindCSS col-span テクニック三選 アイキャッチ画像
TailwindCSS col-span 完全攻略|つまずきポイント3選を実例で解説

TailwindCSS col-span でカラムを結合したいのに効かない、はみ出してしまう、ブレークポイントごとに冗長な記述になる——こうした典型的な落とし穴を、実例コードと画像で解説する3つのテク ...

続きを見る

TailwindCSS row-span テクニック三選 アイキャッチ画像
TailwindCSS row-span|行結合・効かない罠・全行跨ぎ 完全ガイド

TailwindCSS row-span は CSS Grid で要素を縦方向に複数行跨ぐためのユーティリティです。基本の行結合、grid-rows-N との N 不整合の罠、row-span-ful ...

続きを見る

S4: モーダル中央配置

課題: モーダル/オーバーレイの中身を縦横どちらも中央に配置したい

解決クラス:

<div class="fixed inset-0 grid place-items-center bg-black/50">
  <div class="bg-white p-6 rounded">モーダル本体</div>
</div>

ポイント: grid place-items-center の1ペアで縦横両方を中央配置できます。Flexbox なら flex justify-center items-center の2クラス、Grid なら2クラスで完結します。記述量が少なく、意図も明確です。

詳細: place-items / place-content テクニック三選

TailwindCSS place-items テクニック三選 アイキャッチ画像
TailwindCSS place-items 完全攻略|中央配置のつまずき3選を実例で解説

TailwindCSS place-items を含む place-* クラスでつまずきがちな3つのポイントを解説。Flex の癖で冗長になる中央配置、place-items と place-cont ...

続きを見る

S5: 不揃いコンテンツの安全な3列並列

課題: 1fr 指定の3列で、長文URLや大きな画像が含まれるカードが溢れる

解決クラス:

<div class="grid gap-4 grid-cols-[repeat(3,minmax(0,1fr))]">
  <div class="truncate"><!-- 長文URL等 --></div>
</div>

ポイント: 1fr は CSS 仕様上 minmax(auto, 1fr) 相当で、コンテンツの min-content 以下には縮まない性質があります(W3C CSS Grid Layout Module Level 1 §7.2.1)。minmax(0, 1fr) で下限を 0 にし、truncateoverflow-hidden と組み合わせれば、不揃いコンテンツでも崩れない比率指定が可能になります。

詳細: fr 単位 テクニック三選

TailwindCSS fr 単位 テクニック三選 アイキャッチ画像
TailwindCSS fr 単位の使い分け|1frの罠・固定+可変・比率指定 完全ガイド

TailwindCSS fr 単位は CSS Grid で残り領域を比率で配分する単位です。固定+可変、比率指定、minmax(0, 1fr) で長文崩れの罠を回避するテクニックを実例付きで解説します ...

続きを見る


記事カタログ

本ガイドが束ねる 6 記事の一覧です。それぞれが Grid 応用の独立したテクニックをカバーしています。

#テーマ主なクラス詳細
1レスポンシブカードレイアウトauto-fit / auto-fill / minmaxauto-fit テクニック三選
2列結合と全幅col-span / col-span-fullcol-span テクニック三選
3行結合と全行跨ぎrow-span / row-span-fullrow-span テクニック三選
4領域名指定レイアウトgrid-template-areas 任意値grid-template-areas テクニック三選
5比率と固定幅の混在・1fr の罠fr / minmax(0,1fr)fr 単位 テクニック三選
6中央配置・グリッド全体配置place-items / place-contentplace-items / place-content テクニック三選

逆引きリスト

「こういうことをしたい」「こんなトラブルがある」から該当テクニックを探せる逆引きリスト 15 項目です。カテゴリ別に並べています。

#悩み原因解決策詳細
1画面幅でカードの列数を自動変更したい(メディアクエリなし)grid-cols-N は固定列数grid-cols-[repeat(auto-fit,minmax(240px,1fr))]auto-fit
2列数を上限固定にしたい(空きカラムが残ってOK)auto-fit は空きカラムを潰すauto-fill を使うauto-fit
3カードの幅が伸びすぎないようにしたいminmax(240px,1fr) の上限が 1fr で青天井minmax(240px,320px) で上限指定auto-fit
41列だけ全幅にしたい(grid-cols-3 の中で1セル全幅)col-span-N は数値固定col-span-full を使うcol-span
5col-span-12 のような大きな値を使いたいTailwind 標準は col-span-112 までcol-span-[15] 等の任意値構文col-span
6全行跨ぎを N に依存せず指定したいrow-span-N は親 grid-rows-N との整合が必要row-span-fullgrid-row: 1 / -1row-span
7親 grid-rows-N と子 row-span-N が不整合で崩れる暗黙トラックが自動生成されるN を揃える or row-span-fullrow-span
8領域名で分かりやすい2次元レイアウトを組みたいcol-span + row-span は可読性低い[grid-template-areas:...] + [grid-area:...]grid-template-areas
9md: でレスポンシブに領域切替したい(HTML二重化なし)通常はモバイル/デスクトップで HTML を分けるmd:[grid-template-areas:...]grid-template-areas
10固定幅 + 可変幅を混在させたい(サイドバー固定+メイン可変)grid-cols-N は均等分割grid-cols-[240px_1fr] 等の任意値fr 単位
11比率指定(1:2 のような)で列幅を組みたいgrid-cols-2 は 1:1 のみgrid-cols-[1fr_2fr]fr 単位
121fr 指定で長文URLや大きな画像で列が溢れる1frminmax(auto, 1fr) 相当で min-content 以下に縮まないgrid-cols-[repeat(3,minmax(0,1fr))]fr 単位
13縦横どちらも中央配置(モーダル等)を 1 ペアで書きたいjustify-* + items-* は 2 クラス必要grid place-items-centerplace-*
14各セルの中身を中央揃えしたいセル単位の中央指定place-items-centerplace-*
15グリッド全体(コンテナ内)を中央配置したいグリッドコンテナの配置と中身の配置は別place-content-centerplace-*

よくある質問(FAQ)

Grid 応用テクニックでよくある疑問を 6 つにまとめました。

Q1. auto-fit と auto-fill の違いは?

A. 列数が要素数より多くなる場合の挙動が違います。

  • auto-fit: 空きカラムを潰し、既存カードを画面幅いっぱいに伸ばす
  • auto-fill: 空きカラムを残し、既存カードは指定幅を維持

カードを画面幅いっぱいに広げたい(一覧UI、ヒーローセクション等)なら auto-fit、カードの固定幅を維持したい(カタログ等)なら auto-fill が適切です。

詳しくは auto-fit テクニック三選 を参照してください。

Q2. col-span / row-span が効かないのはなぜ?

A. 親要素に grid + grid-cols-N / grid-rows-N の指定が必要です。

特に N の値が col-span-N / row-span-N の N より小さい と、暗黙トラック(implicit grid track)が自動生成され、レイアウトが意図通りになりません。

解決策は2つあります:

  1. 親の N を揃える(例: grid-cols-3 + col-span-2 は OK、grid-cols-2 + col-span-3 は NG)
  2. col-span-full / row-span-full を使う(N に依存しない)

詳しくは col-span テクニック三選 / row-span テクニック三選 を参照してください。

Q3. grid-template-areas はいつ使うべき?

A. 2次元のヘッダー + サイド + メイン + フッターのような領域分けレイアウト で、可読性を重視する場合に使います。

col-span + row-span でも同じレイアウトは作れますが、領域名で書ける grid-template-areas のほうが意図が明確になります。

特に md:[grid-template-areas:...] のような レスポンシブ切替 が容易で、HTML を二重化しなくて済む点が大きな利点です。

詳しくは grid-template-areas テクニック三選 を参照してください。

Q4. fr と minmax(0, 1fr) の使い分けは?

A. コンテンツが auto-minimum(min-content)を超える可能性があれば minmax(0, 1fr) を使います。

1fr は CSS 仕様上 minmax(auto, 1fr) 相当で、「コンテンツの最小幅以下にはならない」性質があります。長文URL、大きな画像、テーブル等を含むセルがあると、想定の比率を超えて広がります。

minmax(0, 1fr) なら下限が 0 になるので、truncateoverflow-hidden と組み合わせて安全な比率指定ができます。

詳しくは fr 単位 テクニック三選 を参照してください。

Q5. place-items と justify-* / items-* の違いは?

A. place-itemsalign-items + justify-items短縮記法 です。

grid place-items-center の 1 クラスで縦横両方中央配置できます(Flexbox では flex justify-center items-center の 2 クラス必要)。

注意: place-items は Flexbox でも使えますが、CSS 仕様上 メイン軸では justify-items が適用されません出典: MDN place-items)。そのため flex place-items-center は実質的に align-items: center のみ適用されます。縦横どちらも中央配置にしたい場合は Grid を使う か、Flexbox なら従来の justify-center items-center を使ってください。

なお place-items は2020年1月以降、主要ブラウザで広く利用可能(Baseline Widely available)です。

詳しくは place-items / place-content テクニック三選 を参照してください。

Q6. このガイドと各テクニック記事はどう使い分ければ?

A. 本ガイドは「6記事の俯瞰」と「シーン別の応用パターン」が看板 です。

  • 実装時の課題が決まっている(「row-span が効かない」等)→ 各テクニック記事に直接アクセス するほうが早い
  • 課題が曖昧(「ダッシュボードを作りたいが、どのクラスを組み合わせるか不明」等)→ 本ガイドのシーン別セクション が役立つ

ブックマークしておけば、どちらの状況にも対応できます。


まとめ

TailwindCSS Grid テクニックを 6 つのパターンで束ねました。

ポイント:

  • レスポンシブ: auto-fit + minmax で滑らかな自動列数変更(メディアクエリ不要)
  • 領域: grid-template-areas で可読性、col-span / row-span で結合
  • サイズ: fr / minmax(0,1fr) で安全な比率指定(1fr の罠を回避)
  • 配置: place-items-center で 1 ペア中央配置(Grid との組み合わせが定石)

各テクニックの詳細は、それぞれの詳細記事で確認できます。ブックマークして、Grid 設計で困ったときに逆引きリストから探してみてください。

最初の一歩を踏み出したい方へ

調べても調べても、何が正解かわからない——

WEB系へスキルチェンジするため、TailwindCSSを学び始めた頃の私です。

何から始めればいいのか、見当もつかない。記事を読んでも、情報がバラバラで混乱するばかり。

それでも諦めずに、調べて、手を動かして、試し続けました。

その結果、ようやく見えてきた「最初の一歩」を、この講座にまとめました。

同じ悩みを持つ方へ、最初の一歩を照らすガイドになれば嬉しいです。

👉 TailwindCSSハンズオン講座(無料の導入記事)

[PR]オススメ講座

「実際に作りながら学んでみたい!」という方には、講師「Shin Code」さんのUdemy講座がオススメ!

Shin Codeさんの講座「【Tailwindcss3.0】利用者急増中!作って学ぶ爆速で理解したい人向けのTailwindcss完全入門パック」では、個人用ポートフォリオサイトを作りながらTailwindCSSについて学習することができます。ポートフォリオサイトによくあるナビゲーションやヒーローセクションといった部品をTailwindCSSでどう書けばよいか、講師の方も一緒に手を動かしながら解説してくれています。

TailwindCSS初心者だった私でも一緒に手を動かして写経したら完成したので、個人的にオススメの講座です!

講座の詳細を見る

-dev, TailwindCSS