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 でレスポンシブグリッドを作る方法をテクニック三選で解説。ブレークポイント不要のカード列数自動調整、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 単位の使い分け|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|任意値で書くテクニック3選
TailwindCSS grid-template-areas は専用ユーティリティがなく任意値構文で書きます。col-span+row-span 方式との違い、領域名ミスマッチ、レスポンシブ切替の正 ...
続きを見る
-
-
TailwindCSS col-span 完全攻略|つまずきポイント3選を実例で解説
TailwindCSS col-span でカラムを結合したいのに効かない、はみ出してしまう、ブレークポイントごとに冗長な記述になる——こうした典型的な落とし穴を、実例コードと画像で解説する3つのテク ...
続きを見る
-
-
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 完全攻略|中央配置のつまずき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 にし、truncate や overflow-hidden と組み合わせれば、不揃いコンテンツでも崩れない比率指定が可能になります。
詳細: fr 単位 テクニック三選
-
-
TailwindCSS fr 単位の使い分け|1frの罠・固定+可変・比率指定 完全ガイド
TailwindCSS fr 単位は CSS Grid で残り領域を比率で配分する単位です。固定+可変、比率指定、minmax(0, 1fr) で長文崩れの罠を回避するテクニックを実例付きで解説します ...
続きを見る
記事カタログ
本ガイドが束ねる 6 記事の一覧です。それぞれが Grid 応用の独立したテクニックをカバーしています。
| # | テーマ | 主なクラス | 詳細 |
|---|---|---|---|
| 1 | レスポンシブカードレイアウト | auto-fit / auto-fill / minmax | auto-fit テクニック三選 |
| 2 | 列結合と全幅 | col-span / col-span-full | col-span テクニック三選 |
| 3 | 行結合と全行跨ぎ | row-span / row-span-full | row-span テクニック三選 |
| 4 | 領域名指定レイアウト | grid-template-areas 任意値 | grid-template-areas テクニック三選 |
| 5 | 比率と固定幅の混在・1fr の罠 | fr / minmax(0,1fr) | fr 単位 テクニック三選 |
| 6 | 中央配置・グリッド全体配置 | place-items / place-content | place-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 |
| 4 | 1列だけ全幅にしたい(grid-cols-3 の中で1セル全幅) | col-span-N は数値固定 | col-span-full を使う | col-span |
| 5 | col-span-12 のような大きな値を使いたい | Tailwind 標準は col-span-1 〜 12 まで | col-span-[15] 等の任意値構文 | col-span |
| 6 | 全行跨ぎを N に依存せず指定したい | row-span-N は親 grid-rows-N との整合が必要 | row-span-full(grid-row: 1 / -1) | row-span |
| 7 | 親 grid-rows-N と子 row-span-N が不整合で崩れる | 暗黙トラックが自動生成される | N を揃える or row-span-full | row-span |
| 8 | 領域名で分かりやすい2次元レイアウトを組みたい | col-span + row-span は可読性低い | [grid-template-areas:...] + [grid-area:...] | grid-template-areas |
| 9 | md: でレスポンシブに領域切替したい(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 単位 |
| 12 | 1fr 指定で長文URLや大きな画像で列が溢れる | 1fr は minmax(auto, 1fr) 相当で min-content 以下に縮まない | grid-cols-[repeat(3,minmax(0,1fr))] | fr 単位 |
| 13 | 縦横どちらも中央配置(モーダル等)を 1 ペアで書きたい | justify-* + items-* は 2 クラス必要 | grid place-items-center | place-* |
| 14 | 各セルの中身を中央揃えしたい | セル単位の中央指定 | place-items-center | place-* |
| 15 | グリッド全体(コンテナ内)を中央配置したい | グリッドコンテナの配置と中身の配置は別 | place-content-center | place-* |
よくある質問(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つあります:
- 親の N を揃える(例:
grid-cols-3+col-span-2は OK、grid-cols-2+col-span-3は NG) 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 になるので、truncate や overflow-hidden と組み合わせて安全な比率指定ができます。
詳しくは fr 単位 テクニック三選 を参照してください。
Q5. place-items と justify-* / items-* の違いは?
A. place-items は align-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を学び始めた頃の私です。
何から始めればいいのか、見当もつかない。記事を読んでも、情報がバラバラで混乱するばかり。
それでも諦めずに、調べて、手を動かして、試し続けました。
その結果、ようやく見えてきた「最初の一歩」を、この講座にまとめました。
同じ悩みを持つ方へ、最初の一歩を照らすガイドになれば嬉しいです。
[PR]オススメ講座
「実際に作りながら学んでみたい!」という方には、講師「Shin Code」さんのUdemy講座がオススメ!
Shin Codeさんの講座「【Tailwindcss3.0】利用者急増中!作って学ぶ爆速で理解したい人向けのTailwindcss完全入門パック」では、個人用ポートフォリオサイトを作りながらTailwindCSSについて学習することができます。ポートフォリオサイトによくあるナビゲーションやヒーローセクションといった部品をTailwindCSSでどう書けばよいか、講師の方も一緒に手を動かしながら解説してくれています。
TailwindCSS初心者だった私でも一緒に手を動かして写経したら完成したので、個人的にオススメの講座です!