本指南帮助您了解如何将项目更新到 Tailwind CSS 4 和 daisyUI 5。
在升级项目之前,请阅读关于
1 -Tailwind CSS 4 破坏性更改
2 -daisyUI 5 发行说明
3 -daisyUI 5 破坏性更改
Tailwind CSS 提供了一个 CLI 工具用于自动升级。它可以自动将新的 Tailwind CSS 更改应用到您的项目。
tailwind.config.js
文件中移除 daisyUI 和插件,以便 Tailwind CSS 升级工具可以安全地将其替换为 CSS 文件。module.exports = {
content: ['./your-files/**/*.{html,js}'],
// other stuff...
- daisyui: {
- themes: ['light', 'dark', 'cupcake'],
- },
- plugins: [require("daisyui")],
}
npx @tailwindcss/upgrade
npm i -D daisyui@latest
@import "tailwindcss";
@plugin "daisyui";
@import "tailwindcss";
@plugin "daisyui" {
themes: light --default, dark --prefersdark, cupcake;
}
现在一切应该按预期工作。如果您遇到任何挑战,可以在daisyUI Discord 服务器上寻求帮助,以便从社区获得帮助。
这些是从 daisyUI 4 到 5 的所有 HTML 更改。总共有约 15 个更改,但您无需全部进行,只需进行您正在使用的那些。
artboard
和phone-*
类。这些类只是简单地设置 div 的宽度和高度。请改用 Tailwind CSSw-*
和h-*
类。之前 | 之后 |
---|---|
artboard phone-1 | w-[320px] h-[568px] |
artboard phone-2 | w-[375px] h-[667px] |
artboard phone-3 | w-[414px] h-[736px] |
artboard phone-4 | w-[375px] h-[812px] |
artboard phone-5 | w-[414px] h-[896px] |
artboard phone-6 | w-[320px] h-[1024px] |
artboard artboard-horizontal phone-1 | w-[568px] h-[320px] |
artboard artboard-horizontal phone-2 | w-[667px] h-[375px] |
artboard artboard-horizontal phone-3 | w-[736px] h-[414px] |
artboard artboard-horizontal phone-4 | w-[812px] h-[375px] |
artboard artboard-horizontal phone-5 | w-[896px] h-[414px] |
artboard artboard-horizontal phone-6 | w-[1024px] h-[320px] |
示例
- <div class="artboard phone-1">
+ <div class="w-[320px] h-[568px]">
online
类为avatar-online
,offline
为avatar-offline
,以及placeholder
为avatar-placeholder
.- <div class="avatar online">
+ <div class="avatar avatar-online">
<div class="w-24 rounded-full">
<img src="https://img.daisyui.com/images/stock/photo-1534528741775-53994a69daeb.webp" />
</div>
</div>
- <div class="avatar offline">
+ <div class="avatar avatar-offline">
<div class="w-24 rounded-full">
<img src="https://img.daisyui.com/images/stock/photo-1534528741775-53994a69daeb.webp" />
</div>
</div>
bottom-nav
组件。请改用dock
组件。btm-nav-xs
,btm-nav-sm
,btm-nav-md
,btm-nav-lg
。请改用dock-xs
,dock-sm
,dock-md
,dock-lg
代替。btm-nav-active
。请改用dock-active
代替。disabled
类的bottom-nav
。请改用aria-disabled="true"
属性或disabled
如果是按钮则使用 attribute 属性。这是为了更好的可访问性。- <div class="btm-nav btm-nav-sm">
+ <div class="dock dock-sm">
<button>🏠</button>
- <button class="active">🍿</button>
+ <button class="dock-active">🍿</button>
<button>⚙️</button>
</div>
card-bordered
已重命名为card-border
.- <div class="card card-bordered">
+ <div class="card card-border">
card-compact
。请改用card-sm
代替。- <div class="card card-compact">
+ <div class="card card-sm">
file-input-ghost
。file-input-bordered
。文件输入现在默认带有边框。使用file-input-ghost
。- <input type="file" class="file-input file-input-bordered">
+ <input type="file" class="file-input">
footer-horizontal
使其在您想要的屏幕尺寸上水平显示。- <footer class="footer">
+ <footer class="footer md:footer-horizontal">
w-full max-w-xs
.input-border
。输入框现在默认带有边框。使用input-ghost
。input-bordered
类(不再需要)。<!-- Input with border -->
<input class="input input-bordered"/>
<!-- Input without border -->
<input class="input"/>
<!-- Input with 20rem width -->
<input class="input w-full max-w-xs"/>
<!-- Input with border -->
<input class="input"/>
<!-- Input without border -->
<input class="input input-ghost"/>
<!-- Input with consistent width -->
<input class="input"/>
mask-parallelogram
,mask-parallelogram-2
,mask-parallelogram-3
,以及mask-parallelogram-4
。这些遮罩样式不再包含在库中。如果您需要它们,请手动使用 CSSw-full
。如果您希望它是全宽,请使用w-full
w-fulldisabled
菜单项的类更改为menu-disabled
.active
菜单项的类更改为menu-active
.focus
菜单项的类更改为menu-focus
.- <ul class="menu">
+ <ul class="menu w-full">
- <li class="disabled"><a>disabled item</a></li>
+ <li class="menu-disabled"><a>disabled item</a></li>
- <li class="active"><a>active item</a></li>
+ <li class="menu-active"><a>active item</a></li>
- <li class="focus"><a>focus item</a></li>
+ <li class="menu-focus"><a>focus item</a></li>
</ul>
camera
类重命名为mockup-phone-camera
.display
类重命名为mockup-phone-display
.mockup-phone-display
<div class="mockup-phone">
- <div class="camera"></div>
+ <div class="mockup-phone-camera"></div>
- <div class="display">
+ <div class="mockup-phone-display">
- <div class="artboard artboard-demo phone-1">Hi.</div>
+ <div class="w-[320px] h-[568px]">Hi.</div>
</div>
</div>
选择框现在默认宽度为 20rem,无需添加w-full max-w-xs
.max-w-none
类。
移除了select-border
。选择框现在默认带有边框。使用select-ghost
。
<!-- Select with border -->
<select class="select select-bordered">
<!-- Select without border -->
<select class="select">
<!-- Select with consistent width -->
<select class="select w-full max-w-xs">
<!-- Select with border -->
<select class="select">
<!-- Select without border -->
<select class="select select-ghost">
<!-- Select with consistent width -->
<select class="select">
- <div class="stack">
- <div class="card bg-base-100 w-36 h-36">Text</div>
- <div class="card bg-base-100 w-36 h-36">Text</div>
- <div class="card bg-base-100 w-36 h-36">Text</div>
+ <div class="stack w-36 h-32">
+ <div class="card bg-base-100">Text</div>
+ <div class="card bg-base-100">Text</div>
+ <div class="card bg-base-100">Text</div>
</div>
stats
背景颜色现在是透明的。如果您需要背景颜色,请使用bg-base-100
。tabs-lifted
为tabs-lift
.- <div class="tabs tabs-lifted">
+ <div class="tabs tabs-lift">
hover
类。请改用hover:bg-base-300
(或任何其他颜色)。- <tr class="hover">
+ <tr class="hover:bg-base-300">
textarea-border
。文本域现在默认带有边框。使用textarea-ghost
。您仍然可以使用相同的 HTML,但类名不再存在,也不会应用颜色、字体大小、flex 等。
我建议对fieldset
和legend
元素使用新添加的类名,以获得更好的可访问性。
<label class="form-control w-full max-w-xs">
Login
<div class="label">
<span class="label-text">Name</span>
</div>
<input class="input" placeholder="Name" />
</label>
<fieldset class="fieldset">
<legend>Login</legend>
<label class="label" for="name">Name</label>
<input id="name" class="input" placeholder="Name" />
</fieldset>
<label class="form-control w-full max-w-xs">
<div class="label">
<span class="label-text">What is your name?</span>
<span class="label-text-alt">Top Right label</span>
</div>
<input type="text" placeholder="Type here" class="input input-bordered w-full max-w-xs" />
<div class="label">
<span class="label-text-alt">Bottom Left label</span>
<span class="label-text-alt">Bottom Right label</span>
</div>
</label>
<fieldset class="fieldset max-w-xs">
<label class="label flex justify-between" for="name">
<span>What is your name?</span>
<span>Top Right label</span>
</label>
<input id="name" class="input" placeholder="Name" />
<label class="label flex justify-between" for="name">
<span>Bottom Left label</span>
<span>Bottom Right label</span>
</label>
</fieldset>
btn-group、input-group 在一年前已被弃用,现在最终被移除。
如果您一直在使用 btn-group 或 input-group,则可以使用join
代替
<div class="btn-group">
<button class="btn">Button 1</button>
<button class="btn">Button 2</button>
</div>
<div class="join">
<button class="btn join-item">Button 1</button>
<button class="btn join-item">Button 2</button>
</div>