DaisyUI logo

DaisyUI

Tailwind CSS 的纯 CSS 组件插件,提供语义化 class 名称和 35 个内置主题

精选工具ReactTailwind CSS纯 CSS 组件主题系统

DaisyUI 是 Tailwind CSS 生态最受欢迎的第三方插件,通过添加语义化组件类大幅简化 HTML 代码,提供 50+ 组件、35 个内置主题,零 JavaScript 运行时。

DaisyUI

Tailwind CSS 的纯 CSS 组件插件,提供语义化 class 名称和 35 个内置主题,零 JavaScript 运行时。

技术简介说明

DaisyUI 是 Tailwind CSS 生态中最受欢迎的第三方插件之一,它通过在 Tailwind 基础上添加语义化的组件类(如 btncardmodal)来大幅简化 HTML 代码。开发者不再需要写一长串 Tailwind 工具类,而是使用简洁的组件类名快速构建界面。

DaisyUI 5 于 2025 年 3 月发布,带来了革命性的性能提升:包体积减少 61%、CDN CSS 文件大小减少 75%,并完全消除了外部依赖(零依赖)。它专为 Tailwind CSS v4 设计,采用现代 CSS 特性如原生嵌套和 color-mix() 函数。

截至 2026 年初,DaisyUI 拥有 41,400+ GitHub Stars,被 50 万+ 开源项目使用,月 CDN 流量达 1,680 万次。它采用 MIT 许可证,由 Pouya Saadeghi 单人维护。

基本信息

快速上手

安装

# 安装 Tailwind CSS v4 + DaisyUI v5
npm install -D tailwindcss@latest @tailwindcss/cli@latest daisyui@latest
/* 主 CSS 文件 */
@import "tailwindcss";
@plugin "daisyui";

基础配置

Vite 项目:

npm install -D tailwindcss @tailwindcss/vite daisyui
// vite.config.js
import tailwindcss from '@tailwindcss/vite'
export default { plugins: [tailwindcss()] }
@import "tailwindcss";
@plugin "daisyui";

Next.js 项目:

npm install -D tailwindcss @tailwindcss/postcss daisyui

⚠️ 注意:Next.js 14 + Tailwind CSS 4.1.8 存在已知兼容性问题,需要手动配置。

CDN 快速体验:

<link href="https://cdn.jsdelivr.net/npm/daisyui@5/daisyui.css" rel="stylesheet" />

最小示例

<!-- 无需写一长串 Tailwind 工具类 -->
<!-- Tailwind 方式: class="px-4 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 ..." -->
<!-- DaisyUI 方式: -->
<button class="btn btn-primary">点击</button>
 
<div class="card bg-base-100 shadow-sm">
  <figure><img src="..." alt="..." /></figure>
  <div class="card-body">
    <h2 class="card-title">卡片标题</h2>
    <p>卡片内容</p>
    <div class="card-actions">
      <button class="btn btn-primary">操作</button>
    </div>
  </div>
</div>

核心概念与架构

Tailwind CSS 插件机制

DaisyUI 是 Tailwind CSS 的插件,它不替代 Tailwind,而是在其基础上提供语义化组件 class:

@import "tailwindcss";
@plugin "daisyui";

CSS-Only 架构

  • 零 JavaScript 依赖:DaisyUI 是纯 CSS 库,不包含任何 JS 运行时
  • 零第三方依赖:v5 消除了所有外部依赖
  • 原生 CSS 嵌套:利用现代 CSS 嵌套避免重复选择器
  • color-mix() 函数:用现代 CSS 函数替代旧的透明度方案
  • ESM 兼容:支持现代模块系统

工作原理

  1. DaisyUI 作为 Tailwind 插件注册一组组件类(btncardmodal 等)
  2. 编译时,这些类被展开为优化后的 CSS 规则
  3. Tailwind 的 PurgeCSS 机制会移除未使用的样式
  4. 最终产物是极小的 CSS 文件

核心特性

  • 50+ 语义化组件类btncardmodalnavbarinputselectcheckboxtoggleradiorangetabletimelineaccordionavatarbadgealerttoastprogressskeleton-textvalidatordockjoincalendarfieldsetlabelfilterliststatushover-3dtext-rotate
  • 35 个内置主题lightdarkcupcakebumblebeeemeraldcorporatesynthwaveretrocyberpunkvalentinehalloweengardenforestaqualofipastelfantasywireframeblackluxurydraculacmykautumnbusinessacidlemonadenightcoffeewinterdimnordsunset,以及 v5 新增的 caramellatteabysssilk
  • 自动暗色模式:支持 data-theme="dark" 切换
  • CSS 变量驱动:所有颜色通过 CSS 变量定义,支持 oklch 色彩空间
  • Theme Generator:可视化创建和导出主题
  • RTL 支持:原生支持从右到左语言布局
  • 响应式设计:所有修饰符默认支持响应式前缀:btn-sm md:btn-lg
  • 可访问性:组件遵循 ARIA 最佳实践,语义化 HTML 元素

生态图

官方工具

工具说明
Theme Generator可视化主题设计器,支持导出
组件文档交互式示例和 API 文档
更新日志详细的版本变更记录

框架集成

框架集成状态
React / Next.js✅ 官方安装指南
Vue / Nuxt✅ 社区支持
Svelte / SvelteKit✅ 原生支持(DaisyUI 官网本身用 Svelte 构建)
Astro✅ 官方支持
Vite✅ 官方安装指南
Angular✅ 纯 CSS 兼容

社区资源

适用场景

✅ 适合的场景

场景原因
快速原型/MVP语义化 class 减少开发时间
中小项目零 JS 开销,极小 CSS 体积
独立开发者无需设计系统,35 个主题开箱即用
内容型网站博客、文档、落地页等
Tailwind CSS 项目完美互补,减少工具类堆砌
多主题需求内置主题系统一键切换
RTL 语言支持原生支持阿拉伯语/希伯来语等

❌ 不太适合的场景

场景原因
企业级复杂应用缺乏 shadcn/ui 级别的细粒度控制
高度定制化设计系统组件样式覆盖成本较高
需要 JS 交互组件CSS-only 无 JS 运行时(如复杂下拉、日期选择器需自建)
严格无障碍合规无障碍支持仍在完善中

开发与工程化

开发流程

  1. 安装 Tailwind CSS v4 和 DaisyUI v5
  2. 在 CSS 文件中配置 @plugin "daisyui"
  3. 使用语义化 class 构建界面
  4. 使用 Theme Generator 创建自定义主题
  5. 生产构建时 Tailwind 自动清理未使用的样式

构建部署

npm run build  # Tailwind 编译 + 项目构建

Tree-shaking

DaisyUI 通过 Tailwind 的 PurgeCSS 机制自动优化:

# 生产构建
npm run build
# 只包含使用的组件样式

性能与安全

性能特点

版本包体积CDN 大小
DaisyUI 4~3.83 MB(含依赖)
DaisyUI 5~1.5 MB(减少 61%)~50KB gzipped(减少 75%)

性能优势

  • 零 JS 运行时:不增加 JS 包体积
  • PurgeCSS 兼容:未使用的样式在生产构建中被移除
  • 微 CSS 文件导入:支持按需导入单个组件的 CSS
  • 原生 CSS 嵌套:减少重复选择器,缩小文件体积
  • color-mix() 优化:减少 CSS 变量计算量

注意事项

  • ⚠️ 有报告指出 Tailwind 的 purge 机制对 DaisyUI 生成的某些类清理不够彻底
  • 建议确保正确配置 Tailwind CSS 4 的构建流程
  • 如果只使用 1-2 个主题,可进一步优化 CSS 体积

安全注意事项

  • 纯 CSS 库,无 JavaScript 运行时风险
  • 无第三方依赖,攻击面极小

技术对比

DaisyUI vs shadcn/ui

维度DaisyUIshadcn/ui
架构Tailwind 插件(CSS-only)可复制粘贴的组件集合(基于 Radix)
JS 依赖Radix UI 原语(有 JS 运行时)
所有权通过 npm 安装代码复制到你的项目中
定制性主题 + CSS 变量完全控制组件代码
可访问性基础强(Radix 原语驱动)
学习曲线低(适合新手)中高(适合有经验的开发者)
最佳场景快速开发、原型、中小项目长期维护的大型产品
包体积极小(纯 CSS)较大(含 JS 组件)

DaisyUI vs Bootstrap

维度DaisyUIBootstrap
底层Tailwind CSS 插件独立 CSS 框架
定制方式Tailwind 工具类 + CSS 变量Sass 变量 + 覆盖
体积更小较大(~170KB gzipped)
JS 组件有(Bootstrap JS)
现代性现代 CSS 特性传统 CSS 方案
生态Tailwind 生态独立生态(更成熟)

DaisyUI vs Flowbite

维度DaisyUIFlowbite
架构CSS-only含 JS 组件
Tailwind 集成原生插件配套库
React 组件无(需自建)有官方 React 组件
免费/付费完全免费 MIT核心免费 + 高级付费
主题系统35 个内置主题有限主题支持

DaisyUI vs Tailwind UI

维度DaisyUITailwind UI
架构Tailwind 插件(CSS-only)付费模板集合
价格免费 MIT商业付费($299+)
JS 组件无(纯 HTML/CSS)
组件数量50+ 语义化组件数百个模板
最佳场景快速开发、原型企业级、设计驱动项目

最佳实践

遵循 DaisyUI 组件层级

<!-- ✅ 正确:使用 DaisyUI 组件结构 -->
<div class="card bg-base-100 shadow-sm">
  <figure><img src="..." alt="..." /></figure>
  <div class="card-body">
    <h2 class="card-title">标题</h2>
    <p>内容</p>
    <div class="card-actions">
      <button class="btn btn-primary">操作</button>
    </div>
  </div>
</div>

使用 CSS 变量而非覆盖样式

/* ✅ 正确:通过变量定制 */
:root {
  --color-primary: oklch(0.5 0.2 240);
  --radius-field: 0.75rem;
}
 
/* ❌ 错误:强制覆盖组件样式 */
.btn { border-radius: 999px !important; }

语义化 HTML

<!-- ✅ v5 推荐:语义化元素 -->
<fieldset class="fieldset">
  <legend class="legend">表单标题</legend>
  <label class="label">姓名</label>
  <input type="text" class="input" placeholder="输入姓名" />
</fieldset>
 
<!-- ❌ 旧版:form-control 已废弃 -->
<div class="form-control">...</div>

移动优先响应式

<button class="btn btn-sm md:btn-md lg:btn-lg">响应式按钮</button>

使用内置主题系统

// ✅ 使用 Theme Generator 生成主题
// ❌ 不要从零开始手写颜色方案

避免的 5 大反模式

  1. 手动翻译设计稿 → 建立设计与代码的命名一致性
  2. 松散的结构布局 → 遵循 DaisyUI 组件层级规范
  3. 大量自定义覆盖 → 使用 CSS 变量和品牌定制系统
  4. 混乱的断点代码 → 移动优先 + 渐进增强
  5. 从零构建色彩方案 → 使用 DaisyUI 语义颜色系统

技术局限与边界

功能性限制

限制说明
无 JS 交互下拉菜单、模态框、手风琴等需要自己实现 JS 逻辑
无障碍待完善组件 ARIA 指南仍在完善中(GitHub Discussion #3135
复杂组件缺失日期选择器、数据表格排序/筛选等高级组件需额外集成

技术限制

限制说明
浏览器兼容性依赖原生 CSS 嵌套和 color-mix(),旧浏览器不支持
PurgeCSS 不完善某些 DaisyUI 生成的类可能不会被正确清理
框架兼容性Next.js 14 + Tailwind CSS 4.1.8 存在已知问题
深度定制成本大幅修改组件外观可能需要大量 CSS 覆盖

生态限制

限制说明
单人维护风险核心由 Pouya Saadeghi 一人维护
企业采用较少相比 Bootstrap/MUI 企业案例较少
社区感知部分开发者认为"还不够成熟" compared to shadcn/ui + Mantine

不太适合的场景

  • 需要复杂 JS 交互组件(选 shadcn/ui 或 Radix)
  • 企业级大规模应用(考虑 MUI 或 shadcn/ui)
  • 需要严格的无障碍合规(shadcn/ui 基于 Radix 更成熟)
  • 需要支持旧浏览器(DaisyUI 5 依赖现代 CSS 特性)

学习资源

官方资源

社区资源

与其他库搭配使用

  • DaisyUI + Tailwind CSS:核心组合
  • DaisyUI + Headless UI:补充 JS 交互
  • DaisyUI + React Hook Form:表单处理
  • DaisyUI + Cally/React Day Picker:日历组件(v5 已集成)

2026 年现状

最新版本

版本亮点
v5.6.14当前稳定版本
v5.0.02025 年 3 月发布,革命性性能提升

DaisyUI 5 重大变更

指标改进幅度
包体积减少 61%
CDN CSS 文件大小减少 75%
依赖数0(零依赖)
Bug 修复140+ 个问题修复

新增组件

类别新增组件
新组件hover-3dtext-rotateskeleton-textvalidatorliststatusfieldsetlabelfiltercalendardockjoin
新主题caramellatteabysssilk

破坏性变更

旧版新版说明
btn-group / input-groupjoin合并为统一组件
btm-navdock重命名
form-controlfieldset语义化 HTML
card-compactcard-sm标准化尺寸修饰
--p--b1 等变量--color-primary--color-base-100可读性提升
tailwind.config.js 配置CSS 内 @plugin 指令配置迁移到 CSS
CDN full.cssdaisyui.cssCDN 入口变更

发展趋势

  • Tailwind CSS v4 深度集成:专为 v4 设计,配置方式完全改变
  • 零依赖架构:消除所有外部依赖
  • 现代 CSS 特性:利用原生嵌套和 color-mix()
  • 性能优先:包体积和 CDN 大小大幅优化

社区活跃度

  • 41,400+ GitHub Stars
  • 50 万+ 开源项目使用
  • 月 CDN 流量 1,680 万次
  • 99.2% issue 解决率(710 个 issue 关闭,仅 16 个 open)

2025 年度关键数据

  • 关闭 710 个 issue,累计关闭 2,064 个
  • 16 个 open issue(99.2% 解决率)
  • 新增 180 个 issue(用户持续增长)
  • 3,062 次提交201 个 release
  • 1.6K fork163 个 watcher

未来路线图

  • 继续完善无障碍支持
  • 优化 Tailwind CSS v4 集成体验
  • 扩展组件库(已有 Calendar、Validator 等新组件)
  • 增强 Theme Generator 功能