dev TailwindCSS

TailwindCSS place-items 完全攻略|中央配置のつまずき3選を実例で解説

TailwindCSS place-items を含む place-* クラスでつまずきがちな3つのポイントを解説。Flex の癖で冗長になる中央配置、place-items と place-content の混同、個別アイテムの配置まで実例コードと画像付きで紹介します。

TailwindCSS place-items を使った中央配置、シンプルに書けていますか?「Flex の癖で justify-items + items の2クラスを書いている」「place-itemsplace-content の違いがあいまい」「特定の1つだけ別配置にしたいのに全部に効いてしまう」——これらは多くの開発者が知らずに通り過ぎてしまう落とし穴です。

この記事では、place-items / place-content / place-self の使い分けで見落としがちな3つのポイントを、NG/OK のコードと実際の表示画像を並べながら解説します。

TailwindCSS place-items を使わず justify-items + items の2クラスで中央配置している例

「中央配置だから justify-items-center items-center の2クラスは必要」——そう思って書いていませんか?実はこれが今回の1つ目のテクニックの題材です。

私の体験談

その前に、私の体験談を紹介させてください。

私はこの記事を執筆するまで、place-items-center というクラスの存在を知りませんでした。

正直に告白すると、Grid のセル内で要素を中央配置したいとき、これまで grid justify-items-center items-center のように2クラス組み合わせて書いていました。Flexbox の justify-center items-center の癖がそのまま身についていたんです。

今回この記事を書くために調べて、「えっ、こんなのあるの?知らなかった」と素直に驚きました。今まで2クラスで書いていた中央配置が、place-items-center 1クラスで済む——記述量がシンプルに半分になります。

公式ドキュメントは Justify Items / Align Items / Place Items が別ページに分かれているため、Flex の感覚で Justify と Align を別々に覚えると、Place のショートハンドの存在に気付きにくい構成です。気づかず冗長な書き方を続けている方は、私以外にもいるんじゃないか——そう思ったのが、この記事を執筆するきっかけになりました。

同じように「いつもの書き方で動いてるけど、もしかしてもっと簡潔にできるのでは?」と感じている方の役に立てれば嬉しいです。

今回紹介する3つのテクニック

place-* クラス(place-items / place-content / place-self)まわりで開発者が躓きやすいポイントを、3つに絞って取り上げます。それぞれ「読者がやりがちな誤解 → NGコード → OKコード → 解説 → ポイント」の流れで進めます。コードはすべて Tailwind Play で再現できる形で示します。

テクニック1: 中央配置で justify-items + items を組み合わせて冗長になる

誤解シナリオ:

読者Aさんは、Grid のセル内のコンテンツ(アイコンやテキスト)を水平・垂直の両方で中央寄せしたいと思っています。

  1. Flexbox での「中央寄せ」の経験から、justify-* + items-* の2軸セットで考える癖がある
  2. 公式ドキュメント(Justify Items - Tailwind CSSAlign Items - Tailwind CSS)で justify-items-centeritems-center を見つける
  3. 「2つ組み合わせれば中央寄せできるな」と思い、grid justify-items-center items-center と記述
  4. 動作はするが、もっと簡潔に書ける方法があるとは気付かない

NGパターン:

<div class="bg-slate-700 p-8">
  <div class="grid grid-cols-3 gap-2 bg-white p-6 rounded h-64 justify-items-center items-center">
    <div class="bg-slate-200 px-4 py-2">セル1</div>
    <div class="bg-slate-200 px-4 py-2">セル2</div>
    <div class="bg-slate-200 px-4 py-2">セル3</div>
  </div>
</div>
TailwindCSS place-items を使わず justify-items + items の2クラスで中央配置している例

動作はしていますが、justify-items-center items-center の2クラス分の冗長さが残ります。

OKパターン:

<div class="bg-slate-700 p-8">
  <div class="grid grid-cols-3 gap-2 bg-white p-6 rounded h-64 place-items-center">
    <div class="bg-slate-200 px-4 py-2">セル1</div>
    <div class="bg-slate-200 px-4 py-2">セル2</div>
    <div class="bg-slate-200 px-4 py-2">セル3</div>
  </div>
</div>
TailwindCSS place-items-center 1クラスでセル内を中央配置した例

見た目は NG と全く同じですが、コードは place-items-center 1クラスに集約され、意図も「2軸まとめて中央配置」と明確になりました。

解説:

place-items-* は CSS の place-items プロパティに対応するショートハンドで、align-items(垂直軸)と justify-items(水平軸)を同時に指定します。両軸とも同じ値(例: center)にしたい場合、place-items-center 1つで済みます。

公式ドキュメントは「Justify Items」「Align Items」「Place Items」が別ページに分かれているため、最初に Justify と Align を見て「2つ書けばいいんだ」と理解すると、Place のショートハンドの存在を見落としやすい構成になっています。

特に Flexbox(justify-center items-center)の癖がある開発者は、Grid でも無意識に同じ書き方をしてしまいがちですが、Grid で place-items-*を使えば記述量が約半分になります。なお place-items は Flexbox でも使えますが、CSS 仕様上 justify-items が無視されるため、縦横どちらも中央に配置するなら Grid を使うのが定石です。

ポイント:

Grid セル内のコンテンツを2軸まとめて配置したいときは、place-items-{center,start,end} を使いましょう。

テクニック2: place-itemsplace-content を混同して効かない

誤解シナリオ:

読者Bさんは、固定幅のカードを並べたGrid 全体を親要素の中央に固めて配置したいと思っています。

  1. 各カードのサイズを固定にして、Grid を作成(例: grid-cols-[120px_120px]
  2. 親要素の方が大きいので、Grid 全体に余白が出る → 中央に配置したい
  3. 公式ドキュメント(Place Items - Tailwind CSS)で place-items-center を見つける
  4. place-items は『place(配置する)items(アイテムを)』だから、グリッド全体を中央配置するクラスだろう」と推察して適用
  5. Grid 全体は親の左上のまま、何も変わらない…と困惑する

NGパターン:

<div class="bg-slate-700 p-8">
  <div class="grid grid-cols-[120px_120px] gap-2 bg-white p-6 rounded h-64 w-full place-items-center">
    <div class="bg-slate-200 w-full p-2 text-center">A</div>
    <div class="bg-slate-200 w-full p-2 text-center">B</div>
    <div class="bg-slate-200 w-full p-2 text-center">C</div>
    <div class="bg-slate-200 w-full p-2 text-center">D</div>
  </div>
</div>
TailwindCSS place-items-center を書いたが grid 全体は親の左上のままになっている例

4枚のカードが親要素の左上に固まったままで、中央には配置されません。

OKパターン:

<div class="bg-slate-700 p-8">
  <div class="grid grid-cols-[120px_120px] gap-2 bg-white p-6 rounded h-64 w-full place-content-center">
    <div class="bg-slate-200 w-full p-2 text-center">A</div>
    <div class="bg-slate-200 w-full p-2 text-center">B</div>
    <div class="bg-slate-200 w-full p-2 text-center">C</div>
    <div class="bg-slate-200 w-full p-2 text-center">D</div>
  </div>
</div>
TailwindCSS place-content-center で grid 全体が親の中央に固まった例

Grid 全体(4枚のカード)が親要素の中央に固まって配置されました。

解説:

place-itemsplace-content は名前が似ていますが、配置の対象が異なります

  • place-items-*: 各 Grid セル内のアイテム(中身)の配置を制御
  • 例: セルが 120×60 で中身が 80×40 のとき、その中身をどこに置くか
  • place-content-*: Grid 全体の塊を、親要素の中でどう配置するか
  • 例: Grid 全体が 250×130 で親が 600×256 のとき、Grid をどこに置くか
  • Grid のサイズが親より小さい場合にのみ意味を持つ

このテクニックでは、各列を [120px_120px] のような固定幅にしているため Grid 全体のサイズは親より小さくなり、その結果 place-content が機能する余白が生まれます。一方で grid-cols-3(=repeat(3, minmax(0, 1fr)))のように Grid が親いっぱいに広がる場合は、place-content を書いても余白がないため見た目に変化はありません。

公式ドキュメントは Place Items / Place Content / Place Self が別ページに分かれているため、最初に「Place Items」だけを読んで「これが配置の万能クラスだ」と思い込むと、Place Content の存在意義に気付きにくい構成です。

ポイント:

Grid 全体を親要素内で配置したいときは place-content-{center,start,end} を、各セル内のアイテムを配置したいときは place-items-{center,start,end} を使い分けましょう。

テクニック3: 個別アイテムを別配置にしたいのに親 place-items で全部に効いてしまう

誤解シナリオ:

読者Cさんは、3つのカードのうち「特定の1つだけ別の配置(例: 右下)」にしたいと思っています。

  1. 公式ドキュメントで place-items-end を見つける
  2. 「これで右下配置にできるな」と思い、親に place-items-end を適用
  3. 確認すると、3つとも全部が右下に配置されてしまった
  4. 「特定の1つだけ右下にしたいのに、全部に効いてしまう…どうやって個別指定するんだろう」と困る

NGパターン:

<div class="bg-slate-700 p-8">
  <div class="grid grid-cols-3 gap-2 bg-white p-6 rounded h-32 place-items-end">
    <div class="bg-slate-200 w-16 h-8 p-1 text-center text-sm">A</div>
    <div class="bg-slate-200 w-16 h-8 p-1 text-center text-sm">B</div>
    <div class="bg-slate-200 w-16 h-8 p-1 text-center text-sm">C</div>
  </div>
</div>
TailwindCSS 親に place-items-end を書いて全アイテムが右下になってしまった例

A・B・C 全部が各セルの右下に配置されてしまい、「C だけ右下」を実現できません。

OKパターン:

<div class="bg-slate-700 p-8">
  <div class="grid grid-cols-3 gap-2 bg-white p-6 rounded h-32">
    <div class="bg-slate-200 w-16 h-8 p-1 text-center text-sm">A</div>
    <div class="bg-slate-200 w-16 h-8 p-1 text-center text-sm">B</div>
    <div class="bg-slate-200 w-16 h-8 p-1 text-center text-sm place-self-end">C</div>
  </div>
</div>
TailwindCSS place-self-end で特定アイテムだけ右下に配置した例

A と B はそれぞれの列の左上(デフォルト)に配置されたまま、C だけが3列目の右下に配置されました。

解説:

place-items-*Grid コンテナ(親) に書くプロパティで、すべての子要素に共通で適用されます。一方、特定のアイテムだけ異なる配置にしたい場合は、そのアイテム自身place-self-* を書きます。

place-self-* は親の place-items-*上書きするため、「全体は左上、特定の1つだけ右下」のような個別制御が可能になります。Flexbox にも items-*(親)と self-*(子)の同じ二重構造があるため、Flex の経験がある開発者には理解しやすい対応関係です。

書く場所クラス役割
親(Grid コンテナ)place-items-*すべての子に一括で配置を指定
子(Grid アイテム)place-self-*その子だけの配置を上書き

公式ドキュメントは Place Items と Place Self が別ページに分かれており、初学者は Place Items だけを読んで「これで配置できる」と判断しがちです。Place Self の存在を知ると、ダッシュボードで「最後のカードだけ右寄せ(CTAボタン用)」のような細かいレイアウト調整が一気にやりやすくなります。

ポイント:

Grid の特定アイテムだけ別の配置にしたいときは、親の place-items-* ではなく、そのアイテムに place-self-* を書きましょう。

まとめ

TailwindCSS place-items / place-content / place-self の使い分けで躓きやすい3つのポイントを解説しました。

  • テクニック1: 中央配置で justify-items + items の2クラスは不要、place-items-center 1クラスで済む
  • テクニック2: place-itemsセル内のアイテム配置place-contentGrid 全体の配置 — 名前は似ていても役割が違う
  • テクニック3: 特定アイテムだけ別配置にしたいときは、親の place-items ではなく子に place-self

place-* クラスは「親で全体指定(place-items/place-content) vs 子で個別上書き(place-self」という二重構造を理解すると、Grid レイアウトの記述が一気にシンプルになります。Flexbox の癖で justify-* + items-* を組み合わせている方は、ぜひ place-* への置き換えを試してみてください。

それではまた、別の記事でお会いしましょう。

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

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

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

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

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

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

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

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

[PR]オススメ講座

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

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

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

講座の詳細を見る

関連記事

Grid の他のテクニックも気になる方へ

Grid 応用編の他のテクニックも見てみたい方は、こちらの記事もご覧になってみてください。

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

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

続きを見る

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 ...

続きを見る

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

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

続きを見る

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

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

続きを見る

Flexbox や Grid の逆引きで探したい方へ

「効かない」「動かない」という症状からレイアウトの解決策を探したい方は、こちらの記事もご覧になってみてください。

TailwindCSS レイアウト逆引きガイド よくあるトラブル30選のアイキャッチ画像
TailwindCSS レイアウト逆引きガイド|よくあるトラブル30選

TailwindCSS レイアウト 効かない原因と解決策を30パターンで網羅。Flexbox、Grid、position、サイズ指定など、カテゴリ別に整理した逆引きリストで、あなたの「効かない」をすぐ ...

続きを見る

Grid 全体を俯瞰したい方へ

Grid に関連する悩みの答えを探してる方は、こちらの記事もご覧になってみてください。

TailwindCSS Grid テクニックまとめ|配置パターンと逆引き 解説記事のアイキャッチ画像
TailwindCSS Grid テクニックまとめ|配置パターンと逆引き

TailwindCSS Grid テクニックを6記事で網羅。auto-fit・col-span・row-span・grid-template-areas・fr単位・place-* を使ったダッシュボー ...

続きを見る

-dev, TailwindCSS