dev TailwindCSS

TailwindCSS gap 効かない?3つの原因と解決テクニック

TailwindCSS の gap が効かない原因を3つのパターンに分けて解説。flex/grid との関係、gap-x/gap-y の違い、親要素との隙間の作り方まで、実例コードで学べます。

この記事から得られる知識

TailwindCSS gap 効かない問題でお困りですか?gap は便利なユーティリティですが、使い方を間違えると全く効かないことがあります。

この問題、見覚えありませんか?

この記事を読むと、以下のことがわかります:

  • gap が効かない3つの原因と解決方法
  • gap-x と gap-y の正しい使い分け
  • gap では作れない「親との隙間」の対処法

これらを理解すれば、gap を使ったレイアウトで迷うことがなくなります。


【体験談】gap を知って余白調整が楽になった

gap を知る前は、コンテンツ同士の余白を margin や padding で都度調整していました。とりあえず最小値や最大値を入れて、画面を見ながら調整を繰り返す——1コンテンツあたり5分〜20分、累計で1〜2時間と余計な時間がかかっていた気がします。

あるとき、公式ドキュメントで別のクラスを調べていたときに偶然 gap を発見しました。「これは便利そうだ」と思って使い始めたのがきっかけです。

gap を使い始めてからは、コンテンツの余白を取るときの時間が大幅に短縮されました。ただ、最初は使い方を間違えて「効かない」と悩むこともありました。この記事では、gap を使う上で注意すべきポイントを3つのテクニックとしてまとめました。


テクニック1:gap は flex / grid でしか効かない

gap が効かない最も多い原因は、flex や grid を指定していないことです。

よくある誤解

Aさんは TailwindCSS の公式ドキュメント(https://tailwindcss.com/docs/gap)で gap を見つけました。

  1. 公式ドキュメントで gap を見つける
  2. 「gap-4 を使えば要素間に隙間ができる」と理解
  3. div に gap-4 を付けてみる
  4. 隙間ができない

NG コード

<div class="bg-slate-700 p-8">
  <div class="gap-4">
    <div class="bg-white p-4 rounded">アイテム1</div>
    <div class="bg-white p-4 rounded">アイテム2</div>
    <div class="bg-white p-4 rounded">アイテム3</div>
  </div>
</div>

gap が効かない例(flex/grid なし)

OK コード

<div class="bg-slate-700 p-8">
  <div class="flex gap-4">
    <div class="bg-white p-4 rounded">アイテム1</div>
    <div class="bg-white p-4 rounded">アイテム2</div>
    <div class="bg-white p-4 rounded">アイテム3</div>
  </div>
</div>

gap が効く例(flex 追加)

解説

gap は CSS の gap プロパティに対応しています。この gapflex または grid コンテナでのみ機能する プロパティです。

通常の div(block 要素)に gap を付けても、ブラウザは無視します。flex や grid を指定して初めて、子要素間の隙間として機能します。

ポイント

gap で隙間を作りたいときは、flex または grid と一緒に使いましょう。


テクニック2:gap-x と gap-y を正しく使い分ける

gap-x と gap-y の使い分けを間違えると、折り返し時に隙間がなくなります。

よくある誤解

Bさんは公式ドキュメント(https://tailwindcss.com/docs/gap)で gap-x と gap-y の違いを調べました。

  1. 公式ドキュメントで gap-x(横方向)と gap-y(縦方向)を発見
  2. flex で横並びにしたので gap-x を使う
  3. flex-wrap で折り返したら 縦の隙間がない

NG コード

<div class="bg-slate-700 p-8">
  <div class="flex flex-wrap gap-x-4 max-w-md">
    <div class="bg-white p-4 rounded w-32">アイテム1</div>
    <div class="bg-white p-4 rounded w-32">アイテム2</div>
    <div class="bg-white p-4 rounded w-32">アイテム3</div>
    <div class="bg-white p-4 rounded w-32">アイテム4</div>
  </div>
</div>

gap-x だけでは折り返し時に縦の隙間がない

OK コード

<div class="bg-slate-700 p-8">
  <div class="flex flex-wrap gap-4 max-w-md">
    <div class="bg-white p-4 rounded w-32">アイテム1</div>
    <div class="bg-white p-4 rounded w-32">アイテム2</div>
    <div class="bg-white p-4 rounded w-32">アイテム3</div>
    <div class="bg-white p-4 rounded w-32">アイテム4</div>
  </div>
</div>

gap で縦横両方の隙間を確保

解説

各クラスの効果は以下の通りです。

クラス効果
gap-4縦横両方に隙間
gap-x-4横方向のみ隙間
gap-y-4縦方向のみ隙間

flex-wrap で折り返すレイアウトでは、縦横両方の隙間が必要になることが多いです。gap-x だけ指定すると、折り返した行との間に隙間ができません。

縦横で異なる隙間が必要な場合のみ gap-x / gap-y を使い、通常は gap で両方指定するのがおすすめです。

ポイント

折り返しがあるレイアウトで隙間を作りたいときは、gap を使いましょう。


テクニック3:親要素との隙間は gap では作れない

gap で親要素との隙間を作ろうとしても、効果はありません。

よくある誤解

Cさんは公式ドキュメント(https://tailwindcss.com/docs/gap)を参考に gap を使ってレイアウトを組んでいました。

  1. flex + gap-4 で子要素間の隙間は完璧
  2. 「親要素との隙間も gap で作れるのでは?」と考える
  3. gap の値を大きくしてみる
  4. 親との隙間は変わらない

NG コード

<div class="bg-slate-700 p-2">
  <div class="flex gap-8 bg-slate-500">
    <div class="bg-white p-4 rounded">アイテム1</div>
    <div class="bg-white p-4 rounded">アイテム2</div>
    <div class="bg-white p-4 rounded">アイテム3</div>
  </div>
</div>

gap を大きくしても親との隙間は変わらない

OK コード

<div class="bg-slate-700 p-2">
  <div class="flex gap-4 p-4 bg-slate-500">
    <div class="bg-white p-4 rounded">アイテム1</div>
    <div class="bg-white p-4 rounded">アイテム2</div>
    <div class="bg-white p-4 rounded">アイテム3</div>
  </div>
</div>

親との隙間は padding で作る

解説

gap は 子要素同士の間の隙間 を指定するプロパティです。親要素と子要素の間の隙間には影響しません。

目的に応じて使うプロパティを選びましょう。

目的使うプロパティ
子要素同士の隙間gap
親要素との隙間(内側)padding
親要素との隙間(外側)margin

gap、padding、margin はそれぞれ役割が異なります。混同しないように覚えておきましょう。

ポイント

親要素との隙間を作りたいときは、padding を使いましょう。


まとめ

TailwindCSS gap 効かない問題の原因と解決方法を3つ紹介しました。

  • テクニック1: gap は flex / grid と一緒に使う
  • テクニック2: 折り返しレイアウトでは gap を使う(gap-x / gap-y ではなく)
  • テクニック3: 親との隙間は padding で作る

gap は正しく使えばとても便利なユーティリティです。この記事で紹介したポイントを押さえて、効率的にレイアウトを組んでいきましょう。

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

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

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

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

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

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

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

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

-dev, TailwindCSS