daisyUI 主題:35 色調主題讓你告別顏色煩惱
\ndaisyUI 的主題不只是「支援暗色模式」而已。\n35 個預設的色彩組合(主題) 已經被設計成產品級別,並且可以將這些色彩一致地套用到整個應用程式。
\n
\n\n本文假設你已經完成安裝。\n若需從頭開始,請參閱官方安裝指南:\nhttps://daisyui.com/docs/install/
\n
\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 改變整體氛圍
\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這一行 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 是復古風格</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 以暗色模式為首選時使用。 \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 個主題中挑選一個,然後在其上覆蓋品牌色。 \n
此時,與其從頭創建新主題,不如只微調 primary、secondary 等關鍵色,這樣既保留了主題的平衡,又能呈現品牌色。
如何實際覆寫 primary、secondary,將在下一篇文章中以程式碼示範。
\n
下一篇預告
\n下一篇將討論:
\n- \n
- 「保持主題,僅微調元件」的實戰模式 \n
- 如何自訂主題 \n
- daisyUI 支援的顏色變數與類別的速查表 \n
下次見!
', '/media/editor_temp/6/80ae2ebd-04c4-4f84-b0d2-15666a888080.png')