はじめに
この文書では、Tailwind CSSを使ったパンくずリスト(Breadcrumb)の作り方を丁寧に解説します。HTMLの構造とTailwindのユーティリティを組み合わせ、見た目だけでなくアクセシビリティやSEOにも配慮した実装方法を紹介します。
本章の目的
本章では、まずパンくずリストの役割と利点、推奨する基本方針を説明します。続く章で実際のコード例やカスタマイズ法を順を追って示します。
パンくずリストが重要な理由
- ユーザーの現在地を分かりやすく示すことで操作性が向上します。
- 検索エンジンがサイト構造を理解しやすくなり、SEOに役立ちます。
- 階層が深いサイトほど利便性が高くなります。
この記事で扱う内容
- シンプルなHTML構造とTailwindクラスの組み合わせ
- ARIA属性やsemantic要素を用いたアクセシビリティ対応
- 区切り(セパレータ)のカスタマイズ方法
- コンポーネント化とテンプレートの使い方
前提
基本的なHTMLとTailwindの導入が済んでいることを想定します。初心者向けに説明を付けますので、初めての方も安心して進めてください。
基本的な実装例
概要
パンくずリストはnavとolで階層を明示し、現在のページにはaria-current=”page”を付けます。Tailwindのユーティリティで見た目と動作を整えます。
実装例(HTML)
<nav aria-label="Breadcrumb">
<ol class="flex items-center gap-x-1 text-sm">
<li>
<a href="/" class="text-blue-600 hover:text-black">ホーム</a>
</li>
<li>
<span class="text-gray-500">/</span>
<a href="/products" class="ml-1 text-blue-600 hover:text-black">商品一覧</a>
</li>
<li aria-current="page">
<span class="text-gray-500">/</span>
<span class="ml-1 text-gray-700">商品A</span>
</li>
</ol>
</nav>
ポイント解説
- navとolで意味を明確にします。スクリーンリーダーが理解しやすくなります。
- aria-current=”page”で現在ページを示します。補助技術に重要です。
- Tailwindのflexとgap-x-1で横並びと間隔を作ります。text-blue-600はリンク色、hover:text-blackでホバー時の色変化を付けます。
- 必要ならSVGの区切りやaria-hidden属性で視覚のみの要素を扱えます。
パンくずリストの仕切り
概要
パンくずリストの仕切り(例:>や/)は視覚的な区切りに使います。CSSの疑似要素(::before/::after)で実装するのが一般的です。Tailwindではユーティリティで簡潔に書けます。
実装例(Tailwind)
- 疑似要素を使う方法(各項目の間に表示):
<li class="after:content-['>'] after:mx-2 after:text-gray-400 last:after:content-['']">
<a href="#">カテゴリ</a>
</li>
- 実際の要素を使う方法(アクセシビリティ対応しやすい):
<li class="inline-flex items-center">
<a href="#">カテゴリ</a>
<span aria-hidden="true" class="mx-2 text-gray-400">/</span>
</li>
アクセシビリティの注意点
疑似要素は多くのスクリーンリーダーで装飾扱いになり読み上げられませんが、確実にしたい場合は実際の要素にaria-hidden="true"を付けます。逆に画面読み上げで区切りを明示したいときはsr-onlyで補助テキストを用意します。
スタイル調整のコツ
- 色や間隔は
text-やmx-で統一します。 - ホバー時に色を変えたい場合は
hover:before:text-...やリンクに直接hover:text-...を追加します。 - 最初や最後の不要な区切りは
first:before:content-['']やlast:after:content-['']で消します。
便利なUIキットとテンプレート
概要
Tailwind CSS向けのUIキットやテンプレートには、パンくずリストのコンポーネントがあらかじめ用意されています。PostSrc、Tailblocks、daisyUIなどは無料で使え、コピー&ペーストで手早く導入できます。
主なキットと特徴
- PostSrc:実際のページを想定したテンプレートが多く、レイアウトに合わせて貼り付けるだけで使えます。
- Tailblocks:シンプルで読みやすいコードが多く、最小限のカスタマイズで済みます。
- daisyUI:クラス名でテーマ切替ができ、見た目を統一しやすいです。
使い方の流れ(コピー&ペースト)
- キットのサイトでパンくずコンポーネントを探す。
- HTML/CSS(またはTailwindクラス)をコピーする。
- プロジェクトに貼り付け、必要な部分だけ書き換える。
カスタマイズのポイント
- 色や間隔はTailwindのユーティリティクラスで変更できます。例:text-sm、px-2など。
- アイコンはSVGを差し替えるだけで見た目が整います。
- レスポンシブ対応は既存のクラスでほぼ対応できます。
注意点
- ライセンスを確認してください。多くは無料ですが条件がある場合があります。
- アクセシビリティ(aria属性など)を確認し、必要なら追記してください。
まとめ
ここまでの要点を分かりやすく整理します。
-
セマンティックな構造を使う: nav、ol、li を基本にします。検索エンジンや支援技術に優しい構造です。
-
Tailwindのユーティリティを活用する: flex、items-center、space-x-2、text-gray-500 などで見た目を整えます。クラスを組み合わせて一貫したデザインにできます。
-
仕切りの実装例: before:content-[‘>’] や SVG アイコンを使う方法があります。before を使う場合は aria-hidden=”true” を付けて視覚補助に影響しないようにします。
-
アクセシビリティ: nav に aria-label、現ページの li に aria-current=”page” を付けて状態を伝えます。スクリーンリーダー向けの配慮を忘れないでください。
-
UIキットやテンプレートの活用: Flowbite、DaisyUI、Tailwind UI などは短時間で高品質なパンくずを作れます。カスタマイズも容易です。
短いチェックリスト:
1. nav と ol/li を使う
2. Tailwind で間隔と色を調整
3. 仕切りは before か SVG
4. aria-label と aria-current を設定
この流れで実装すれば、見た目と使いやすさの両立ができます。ぜひ試してみてください。












