daisyUIテーマ:35色パレットで『色の悩み』を解消
\ndaisyUIのテーマは単に「ダークモード対応」だけではありません。
\n製品レベルでデザインされた35色のパレット(テーマ)を提供し、そのパレットをアプリ全体に一貫して適用できるようにします。

\n\n本記事はインストールが完了している前提で進めます。
\n
\nインストールから始める場合は公式ガイドを参照してください:
\nhttps://daisyui.com/docs/install/
\n
テーマを理解するコア:『色を直接指定しない』
\n初心者が最も混乱しやすいポイントはここです。
\n| 誤った方法 | \n結果 | \n
|---|---|
Tailwindで bg-white、text-slate-900、bg-blue-600 など色を直接指定すると | \nテーマを変更してもその要素は固定色を維持します。 | \n
つまり、テーマを使うには色をハードコーディングせず、daisyUIが提供するトークン(意味ベースの色名)を使用する必要があります。
\n❌ 誤った例:テーマを無視したハードコーディング
\n<div class="bg-white text-slate-900 p-6 rounded-2xl">\n <button class="bg-blue-600 text-white px-4 py-2 rounded-lg">Save</button>\n</div>\n\n✅ 正しい例:daisyUIトークンを使ってテーマに『順応』
\n<div class="bg-base-100 text-base-content p-6 rounded-box">\n <button class="btn btn-primary">Save</button>\n</div>\n\nここで重要なのは「何色か」ではなく「何の役割か」です。
\n- \n
bg-base-100: 画面/カードの基本背景 \ntext-base-content: 基本テキスト色 \nbtn-primary: 製品の代表的な行動(CTA) \n
テーマはこれらの役割に合わせて色を差し替えます。
\n\n
では『必ず』何を使うべきか?
\ndaisyUIテーマを正しく使うには、以下のうちの一つ(または両方)を習慣的に使用します。
\n| 使用法 | \n例 | \n
|---|---|
| daisyUIコンポーネントクラス | \nbtn、btn-primary、alert、badge、card、navbar、input … | \n
| daisyUIカラー・トークンクラス(意味ベースの色) | \n背景/テキスト基本:bg-base-100、bg-base-200、bg-base-300、text-base-content ポイント色: bg-primary、text-primary、bg-secondary、bg-accent、bg-neutral 状態色: bg-info、bg-success、bg-warning、bg-error(それぞれ *-content 付き) | \n
例えば「警告バナー」を作るときも色を直接指定せず、役割で表現します。
\n<div class="bg-warning text-warning-content p-4 rounded-box">\n 支払い情報が欠落しています。\n</div>\n\n\n
テーマ適用:data-theme 1行で全体の雰囲気を変える
\nテーマ適用は意外と簡単です。
\n<html data-theme="cupcake">\n <body>\n <div class="bg-base-100 text-base-content min-h-screen p-10">\n <button class="btn btn-primary">Primary</button>\n </div>\n </body>\n</html>\n\nこの1行(data-theme)がアプリ全体の色変数セットを切り替えます。
\n
テーマは「全体」だけでなく:セクション単位でも可能
\n製品開発ではこうした要件が頻繁に出てきます。
\n- \n
- 「メインページはシンプルだけど、イベントバナーはもっと目立たせたい」 \n
- 「管理者ページはダーク、ユーザーページはライト」 \n
daisyUIは特定DOMに data-theme を付けるだけでその領域だけテーマが変わります。ネストも制限なしです。
<html data-theme="dark">\n <body>\n <main class="p-10">\n <h1 class="text-2xl font-bold">全体はダーク</h1>\n\n <section data-theme="light" class="mt-8 p-6 rounded-box bg-base-100 text-base-content">\n このセクションは常にライト\n <span data-theme="retro" class="ml-2">このスパンはレトロ</span>\n </section>\n </main>\n </body>\n</html>\n\nこの機能は「テーマトグル」より実務で頻繁に使われます。
\n\n
テーマ管理:必要なテーマだけをオンにする習慣
\nインストールが完了したら、テーマの有効化はCSSの @plugin "daisyui" { ... } ブロックで管理します。
@import "tailwindcss";\n\n@plugin "daisyui" {\n themes: light --default, dark --prefersdark, cupcake;\n}\n\n- \n
themesは カンマ区切りのリストです。 \n--defaultはデフォルトテーマ \n--prefersdarkは OS のダークモード好み(prefers-color-scheme: dark)時のデフォルトテーマ \n
「まず全部オンにして選ぶ」場合はこうもできます。
\n@plugin "daisyui" {\n themes: all;\n}\n\nただし製品では通常 必要なものだけをオンにするほうが管理しやすいです。
\n\n
差別化ポイント:『テーマ選択』をデザインではなく製品戦略として見る
\n35のテーマを「可愛いスキン」だけだと損です。私はテーマをこう使います。
\n| ステージ | \n活用方法 | \n
|---|---|
| MVP段階 | \nテーマを「ブランド候補」として複数立ち上げ、UI/コンテンツと合うかを迅速に検証 | \n
| 運用段階 | \n色をハードコーディングしないので、ブランドリニューアル/シーズンイベントはテーマ切替で完結 | \n
| チーム協力 | \nデザイナーがいなくても「役割ベースのトークン」を守れば一貫性が保てる | \n
結局のところは一つです。
\n\n\n「色を直接書く習慣」をやめるだけで、テーマはアプリ全体を一瞬でアップグレードできるツールになります。
\n
\n
カスタムテーマはいつ必要か?
\n結論から言うと、ほとんどの場合は基本35テーマだけで十分です。基本テーマはすでに完成度が高く、通常は「基本テーマ選択 + ほんの少しの修正」で実務に投入できます。
\nそれでもカスタム(オーバーライド)を検討するケースがあります。
\n- \n
- ブランドカラーが明確な場合:会社/サービスの代表色が既に決まっており、基本35テーマの中から1つを選んでその上にブランドカラーを重ねるようにしたいとき \n
この場合、最初から新テーマを作るより、primary、secondary だけを少しカスタマイズする方が効率的です。ボタン/リンク/CTAなどの主要インタラクションがブランド色で統一され、残りのトーン(背景/テキスト/状態色)は基本テーマのバランスをそのまま引き継げます。
primary、secondary を実際にどうカスタマイズするか(基本テーマをオーバーライドする方法)は 次回の投稿でコードとともに詳しく解説します。
\n
次回予告
\n次回は以下を取り上げます。
\n- \n
- 「テーマは維持しつつコンポーネントだけを少し変える」実務パターン \n
- テーマをカスタマイズする方法 \n
- daisyUIでサポートされている色変数とクラスの種類をまとめたチートシート \n
また会いましょう!
', '/media/editor_temp/6/80ae2ebd-04c4-4f84-b0d2-15666a888080.png')