Tailwind
CSSで背景色やボーダーは書ける。でもグラデーション、リングユーティリティ、カスタムシャドウあたりになると、毎回ドキュメントを行き来していませんか。
この記事では、背景・ボーダー・シャドウの応用テクニックを実装コード付きでまとめています。最後にカードUI・ヒーローセクション・フォームの3パターンをコピペ用に載せているので、手を動かしながら読んでみてください。
色指定やサイズの基本がまだ不安な方は、先にTailwind
CSS基本クラスの使い方を確認しておくとスムーズです。
背景スタイル
背景色(bg-{color})
基本は bg-{color}-{shade} です。shade
は50〜950の範囲で、数字が大きいほど濃くなります。
<div class="bg-blue-500 text-white p-4">青背景</div>
<div class="bg-gray-100 p-4">薄いグレー背景</div>
透過度をつけたいときは、スラッシュ記法を使います。
<!-- 50%透過の青 -->
<div class="bg-blue-500/50 p-4">半透明</div>
<!-- 25%透過 -->
<div class="bg-black/25 p-4">うっすら黒</div>
bg-blue-500/50 の /50
が不透明度です。0(完全透明)から100(不透明)まで指定できます。オーバーレイを重ねるときによく使います。
グラデーション(bg-gradient-to-{方向})
Tailwindの線形グラデーションは3つのクラスの組み合わせで作ります。
- 方向:
bg-gradient-to-r(右へ),
bg-gradient-to-br(右下へ), etc. - 開始色:
from-{color} - 終了色:
to-{color} - 中間色(任意):
via-{color}
<!-- 青→紫のグラデーション(右方向) -->
<div class="bg-gradient-to-r from-blue-500 to-purple-600 text-white p-6 rounded-lg">
右方向グラデーション
</div>
<!-- 3色グラデーション(via で中間色を指定) -->
<div class="bg-gradient-to-r from-green-400 via-blue-500 to-purple-600 text-white p-6 rounded-lg">
3色グラデーション
</div>
方向の指定は全8パターンあります。
| クラス | 方向 |
|---|---|
bg-gradient-to-t |
下→上 |
bg-gradient-to-tr |
左下→右上 |
bg-gradient-to-r |
左→右 |
bg-gradient-to-br |
左上→右下 |
bg-gradient-to-b |
上→下 |
bg-gradient-to-bl |
右上→左下 |
bg-gradient-to-l |
右→左 |
bg-gradient-to-tl |
右下→左上 |
ヒーローセクションやCTAボタンに
bg-gradient-to-br from-blue-600 to-purple-700
を当てるだけで、一気に印象が変わります。個人的に、グラデーション1つで「ちゃんとしたサイト感」が出るのがTailwindの好きなところです。
背景画像
任意値(arbitrary values)で背景画像を指定できます。
<div class="bg-[url('/images/hero.jpg')] bg-cover bg-center h-64">
<!-- 背景画像の上にコンテンツ -->
</div>
よく組み合わせるクラスをまとめておきます。
| クラス | 効果 |
|---|---|
bg-cover |
要素全体を覆うようにリサイズ |
bg-contain |
画像全体が見えるようにリサイズ |
bg-center |
中央配置 |
bg-no-repeat |
繰り返しなし |
bg-fixed |
スクロール時に背景を固定(パララックス風) |
ボーダー
基本(border,
border-{color}, border-{width})
border
だけで1pxのボーダーがつきます。色と太さを変えたいときは追加で指定します。
<!-- デフォルト(1px, グレー) -->
<div class="border p-4">基本ボーダー</div>
<!-- 色を変更 -->
<div class="border border-blue-500 p-4">青ボーダー</div>
<!-- 太さを変更(2px) -->
<div class="border-2 border-red-500 p-4">太めの赤ボーダー</div>
<!-- 片側だけ -->
<div class="border-b-2 border-gray-300 p-4">下線のみ</div>
片側指定は
border-t(上)、border-r(右)、border-b(下)、border-l(左)です。タブUIの下線やセクション区切りに重宝します。
角丸(rounded-{size})
<div class="rounded p-4 bg-gray-100">やや角丸(4px)</div>
<div class="rounded-lg p-4 bg-gray-100">角丸(8px)</div>
<div class="rounded-xl p-4 bg-gray-100">大きめ角丸(12px)</div>
<div class="rounded-full p-4 bg-gray-100">完全な円(50%)</div>
片側だけ丸くすることもできます。カードの上部だけ丸くしたいケースで使います。
<!-- 上側だけ角丸 -->
<div class="rounded-t-lg bg-blue-500 text-white p-4">ヘッダー</div>
<div class="bg-white p-4">コンテンツ</div>
rounded-t-lg(上側)、rounded-b-lg(下側)、rounded-l-lg(左側)、rounded-r-lg(右側)。正直、rounded-t
と rounded-b
だけ覚えておけば実務の9割はカバーできます。
リングユーティリティ(ring-{width})
ring は box-shadow
ベースのアウトラインです。border
と違って要素のサイズに影響しません。フォーカス状態のスタイリングで真価を発揮します。
<!-- 常時表示のリング -->
<div class="ring-2 ring-blue-500 p-4 rounded">リング付き</div>
<!-- フォーカス時にリング表示(フォームで定番) -->
<input type="text"
class="border border-gray-300 rounded-lg px-4 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500"
placeholder="フォーカスしてみてください">
focus:ring-2 focus:ring-blue-500
の組み合わせは、フォーム要素のフォーカスインジケータとして定番です。focus:outline-none
でブラウザデフォルトのアウトラインを消して、ring
で置き換えるパターン。これ1つ覚えれば十分です。
分割線(divide-{axis}-{width})
リスト要素の間に線を引くとき、各要素に border-b
をつけると最後の要素にも線がついてしまいます。divide
なら要素間だけに線が入ります。
<ul class="divide-y divide-gray-200">
<li class="py-3">アイテム1</li>
<li class="py-3">アイテム2</li>
<li class="py-3">アイテム3(下に線なし)</li>
</ul>
divide-y が縦方向(横線)、divide-x
が横方向(縦線)です。色は divide-{color}
で指定します。地味ですが、リストUIを作るときの定番なので知っておいて損はありません。
シャドウ & エフェクト
ボックスシャドウ(shadow-{size})
Tailwindのシャドウは6段階のプリセットがあります。
<div class="shadow-sm p-4 bg-white rounded">shadow-sm</div>
<div class="shadow p-4 bg-white rounded">shadow(デフォルト)</div>
<div class="shadow-md p-4 bg-white rounded">shadow-md</div>
<div class="shadow-lg p-4 bg-white rounded">shadow-lg</div>
<div class="shadow-xl p-4 bg-white rounded">shadow-xl</div>
<div class="shadow-2xl p-4 bg-white rounded">shadow-2xl</div>
カード系のUIなら shadow-md か shadow-lg
あたりが無難です。ホバーで影を大きくする演出もよく見かけます。
<div class="shadow-md hover:shadow-xl transition-shadow duration-300 p-6 bg-white rounded-lg">
ホバーで影が大きくなる
</div>
transition-shadow duration-300
を忘れると影がパッと切り替わってしまうので注意してください。
カスタムシャドウ
プリセットで足りないときは任意値で指定できます。
<!-- 色付きシャドウ -->
<div class="shadow-lg shadow-blue-500/30 p-4 bg-white rounded-lg">
青いシャドウ
</div>
<!-- 完全カスタム -->
<div class="shadow-[0_4px_20px_rgba(0,0,0,0.15)] p-4 bg-white rounded-lg">
カスタム値
</div>
shadow-blue-500/30 は「shadow-lg
の形状で色だけ青(30%透過)にする」という指定です。ブランドカラーに合わせた影をつけたいときに使えます。
backdrop-blur 等のフィルター
背景をぼかす backdrop-blur
は、半透明カードやオーバーレイで活躍します。
<!-- すりガラス風カード -->
<div class="bg-white/70 backdrop-blur-md p-6 rounded-xl">
背景がぼんやり透ける
</div>
関連するフィルタークラスも紹介しておきます。
| クラス | 効果 |
|---|---|
backdrop-blur-sm /md / lg |
背景ぼかし(強度別) |
backdrop-brightness-75 |
背景の明度を下げる |
backdrop-saturate-150 |
背景の彩度を上げる |
blur-sm / md /lg |
要素自体をぼかす |
bg-white/70 backdrop-blur-md
の組み合わせは、いわゆる「すりガラス(glassmorphism)」の定番です。iOS風のUIを作りたいときに一発で雰囲気が出ます。
実践コピペ集(3パターン)
ここまでの知識を組み合わせた実践パターンです。そのままコピペして使えます。
パターン1:
カードUI(グラデーション背景 + 角丸 + シャドウ)
<div class="max-w-sm mx-auto">
<div class="bg-gradient-to-br from-blue-500 to-purple-600 rounded-2xl shadow-xl overflow-hidden">
<div class="p-6 text-white">
<span class="text-sm font-medium bg-white/20 px-3 py-1 rounded-full">NEW</span>
<h3 class="text-xl font-bold mt-4">プレミアムプラン</h3>
<p class="text-blue-100 mt-2 text-sm">すべての機能が使い放題</p>
<p class="text-4xl font-bold mt-4">¥980<span class="text-base font-normal">/月</span></p>
</div>
<div class="bg-white p-6">
<ul class="space-y-3 text-sm text-gray-600">
<li class="flex items-center gap-2">
<span class="text-green-500">✓</span> 無制限ストレージ
</li>
<li class="flex items-center gap-2">
<span class="text-green-500">✓</span> 優先サポート
</li>
<li class="flex items-center gap-2">
<span class="text-green-500">✓</span> API アクセス
</li>
</ul>
<button class="w-full mt-6 bg-blue-600 text-white py-3 rounded-lg font-bold hover:bg-blue-700 transition-colors">
今すぐ始める
</button>
</div>
</div>
</div>
ポイントは bg-gradient-to-br
でヘッダー部分にグラデーション、rounded-2xl shadow-xl
で立体感、bg-white/20
のバッジで半透明アクセントを入れているところです。
パターン2:
ヒーローセクション(背景画像 + オーバーレイ + テキスト)
<section class="relative h-96 overflow-hidden">
<!-- 背景画像 -->
<div class="absolute inset-0 bg-[url('/images/hero.jpg')] bg-cover bg-center"></div>
<!-- 暗いオーバーレイ -->
<div class="absolute inset-0 bg-black/60"></div>
<!-- テキスト -->
<div class="relative z-10 flex items-center justify-center h-full px-4">
<div class="text-center text-white max-w-2xl">
<h1 class="text-3xl md:text-5xl font-bold mb-4">あなたのアイデアを形にする</h1>
<p class="text-lg text-gray-200 mb-8">シンプルなツールで、複雑なことを実現する</p>
<a href="#"
class="inline-block bg-gradient-to-r from-blue-500 to-purple-600 px-8 py-4 rounded-lg font-bold hover:shadow-lg hover:shadow-purple-500/30 transition-all">
無料で始める
</a>
</div>
</div>
</section>
構造は3層です。背景画像(absolute inset-0)→
オーバーレイ(bg-black/60)→
テキスト(relative z-10)。bg-black/60
の透過度を変えるだけで明暗を調整できます。CTAボタンの
hover:shadow-lg hover:shadow-purple-500/30
で、ホバー時に色付きシャドウが出る演出を加えています。
パターン3:
入力フォーム(リングフォーカス + ボーダー)
<form class="max-w-md mx-auto space-y-4">
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">名前</label>
<input type="text"
class="w-full border border-gray-300 rounded-lg px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all"
placeholder="山田太郎">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">メールアドレス</label>
<input type="email"
class="w-full border border-gray-300 rounded-lg px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all"
placeholder="taro@example.com">
</div>
<div>
<label class="block text-sm font-medium text-gray-700 mb-1">メッセージ</label>
<textarea rows="4"
class="w-full border border-gray-300 rounded-lg px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all resize-none"
placeholder="お問い合わせ内容"></textarea>
</div>
<button type="submit"
class="w-full bg-blue-600 text-white py-3 rounded-lg font-bold shadow-md hover:bg-blue-700 hover:shadow-lg transition-all">
送信する
</button>
</form>
フォーム要素のフォーカスは
focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent
のセットです。focus:border-transparent
を入れないと、リングとボーダーが二重に見えるので注意。ぶっちゃけ、このクラスの組み合わせはプロジェクト単位でコンポーネント化しておくのがベストです。再利用できるUIコンポーネント集でコンポーネント化の方法を解説しています。
よくあるミス3選
ミス1:
グラデーションの to-{color} を忘れる
<!-- ❌ to がない → グラデーションにならず透明にフェードする -->
<div class="bg-gradient-to-r from-blue-500 p-4">あれ?</div>
<!-- ✅ to を指定する -->
<div class="bg-gradient-to-r from-blue-500 to-purple-600 p-4">正常なグラデーション</div>
from
だけ指定すると、デフォルトで透明に向かってフェードします。意図的にやるならアリですが、たいていは
to の書き忘れです。
ミス2: ring と
border の違いを理解していない
<!-- ❌ border を追加するとレイアウトがずれる -->
<div class="w-48 border-4 border-blue-500 p-4">要素が4px大きくなる</div>
<!-- ✅ ring はレイアウトに影響しない -->
<div class="w-48 ring-4 ring-blue-500 p-4">サイズそのまま</div>
border
はボックスモデルの一部なので、要素のサイズが変わります。ring
は box-shadow
ベースなのでサイズに影響しません。ホバーやフォーカスで枠線をつけるとき、border
だとガタつきの原因になります。
ミス3: shadow
の色指定で透過度を忘れる
<!-- ❌ 透過度なし → 影が濃すぎて不自然 -->
<div class="shadow-lg shadow-blue-500 p-4 bg-white rounded">重い...</div>
<!-- ✅ /30 等で透過度を指定 -->
<div class="shadow-lg shadow-blue-500/30 p-4 bg-white rounded">自然な色付きシャドウ</div>
色付きシャドウは /20 〜 /40
くらいが自然です。透過度なしだとベタ塗りのような影になります。
まとめ
背景・ボーダー・シャドウの応用テクニックを紹介しました。
| カテゴリ | よく使うクラス |
|---|---|
| 背景色 | bg-{color}-{shade},bg-{color}/50(透過) |
| グラデーション | bg-gradient-to-r from-{color} to-{color} |
| 背景画像 | bg-[url('...')],bg-cover, bg-center |
| ボーダー | border,border-{color}, border-b-2 |
| 角丸 | rounded-lg,rounded-t-lg, rounded-full |
| リング | focus:ring-2 focus:ring-{color} |
| 分割線 | divide-y divide-{color} |
| シャドウ | shadow-md,shadow-{color}/30 |
| フィルター | backdrop-blur-md,bg-white/70 |
基本クラスの復習にはTailwind
CSS基本クラスの使い方、レスポンシブ対応はTailwind
CSSレスポンシブ実装ガイド、テーマの拡張やカスタムカラーの追加はTailwind
CSSカスタマイズ入門で解説しています。
参考になれば幸いです。
この記事は「Tailwind CSS完全ガイド」シリーズの一部です。 → シリーズ全体を見る:Tailwind
CSS完全ガイド

