Laravel × Tailwind CSS 基本の使い方
投稿日:2026/01/23
Laravelでは、Breeze / Jetstream などのスターターキットを使うことで、Tailwind CSSが自動的に導入されます。 本記事では、すでにTailwindが利用できる状態を前提に、基本的な使い方と実務でよく使うパターンを解説します。
Tailwind CSSの基本思想
Tailwind CSSは、ユーティリティクラスを組み合わせてUIを構築するCSSフレームワークです。
<button class="bg-blue-600 text-white px-4 py-2 rounded">
保存
</button>
従来のようにCSSファイルにクラスを書くのではなく、
- 色
- 余白
- サイズ
- レイアウト
- 状態(hover / focus)
をHTML側で組み立てます。
よく使う基本クラス
余白(margin / padding)
<div class="p-4 m-2">
コンテンツ
</div>
| クラス | 意味 |
|---|---|
| p-4 | 全方向padding |
| px-4 | 左右padding |
| py-2 | 上下padding |
| m-2 | 全方向margin |
| mt-4 | 上margin |
文字サイズ・色
<h1 class="text-xl font-bold text-gray-800">
タイトル
</h1>
| クラス | 意味 |
|---|---|
| text-sm / text-lg / text-xl | 文字サイズ |
| font-bold | 太字 |
| text-gray-800 | 文字色 |
背景・枠線
<div class="bg-white border border-gray-200 rounded">
ボックス
</div>
横並びレイアウト(Flex)
<div class="flex items-center justify-between">
<span>タイトル</span>
<button>編集</button>
</div>
| クラス | 意味 |
|---|---|
| flex | 横並び |
| items-center | 縦中央揃え |
| justify-between | 左右に配置 |
グリッドレイアウト(Grid)
<div class="grid grid-cols-3 gap-4">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
ボタンの基本パターン
<button class="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded">
保存
</button>
ポイント:
hover:でホバー時の状態指定- 色は
blue-600など段階指定 roundedで角丸
フォームの基本パターン
<input
type="text"
class="border border-gray-300 rounded px-3 py-2 w-full focus:outline-none focus:ring focus:ring-blue-300"
/>
よく使う状態指定:
| プレフィックス | 意味 |
|---|---|
| hover: | ホバー時 |
| focus: | フォーカス時 |
| disabled: | 無効時 |
レスポンシブ対応
画面サイズに応じてクラスを切り替えられます。
<div class="text-sm md:text-base lg:text-lg">
レスポンシブ文字サイズ
</div>
| プレフィックス | 画面幅 |
|---|---|
| sm | 640px〜 |
| md | 768px〜 |
| lg | 1024px〜 |
| xl | 1280px〜 |
Bladeと組み合わせる実践例
一覧画面のカードUI例
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
@foreach ($posts as $post)
<div class="border rounded p-4 shadow">
<h2 class="font-bold text-lg mb-2">
{{ $post->title }}
</h2>
<p class="text-gray-600 text-sm">
{{ Str::limit($post->body, 100) }}
</p>
</div>
@endforeach
</div>
Bladeコンポーネント化
同じデザインを何度も書く場合は、Bladeコンポーネント化すると保守性が上がります。
<x-primary-button>
保存
</x-primary-button>
UIルールの統一にも効果的です。
よくあるつまずきポイント
クラスが反映されない
- Viteが起動していない
- キャッシュが残っている
まずは npm run dev が動いているか確認します。
クラスが長くなりすぎる
class="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded shadow text-sm"
→ コンポーネント化で解消します。
実務での設計ポイント
- 色・余白ルールをチームで統一する
- ボタン・フォームは必ずコンポーネント化
- レスポンシブは最初から設計する
- ダークモード対応を考慮する
まとめ
- TailwindはHTMLだけでデザインが完結する
- ユーティリティクラスを組み合わせるだけでUI構築できる
- Bladeとの相性が非常に良い
- コンポーネント化が保守性の鍵