迁移时间: 2025-11-05
Tailwind 版本: v4.0 (最新版)
改造范围: frontend 前端项目全局样式系统
npm install -D tailwindcss @tailwindcss/postcss postcss autoprefixer
tailwind.config.jspostcss.config.jsexport default {
plugins: {
'@tailwindcss/postcss': {},
autoprefixer: {},
},
}
src/index.css@import "tailwindcss"| 页面 | 原 CSS 文件 | 状态 | 说明 |
|---|---|---|---|
| WelcomePage | WelcomePage.css |
✅ 已删除 | 完全使用 Tailwind |
| LoadingPage | LoadingPage.css |
✅ 已删除 | 完全使用 Tailwind |
| GreetingPage | GreetingPage.css |
✅ 已删除 | 完全使用 Tailwind |
| VideoIntroPage | VideoIntroPage.css |
⚠️ 保留 | 包含 video.js 特殊样式 |
| ChatBotPage | ChatBotPage.css |
⚠️ 保留 | 包含复杂动画逻辑 |
| App | App.css |
✅ 已删除 | 使用内联 Tailwind |
sm: 640px (小屏手机)
md: 768px (平板)
lg: 1024px (笔记本)
xl: 1280px (桌面)
2xl: 1536px (大屏)
fontSize: {
'fluid-xs': 'clamp(12px, 3vw, 14px)',
'fluid-sm': 'clamp(14px, 3.5vw, 16px)',
'fluid-base': 'clamp(16px, 4vw, 18px)',
'fluid-2xl': 'clamp(24px, 6vw, 32px)',
}
spacing: {
'5vw': '5vw',
'18vh': '18vh',
'32vh': '32vh',
'42vh': '42vh',
}
colors: {
'bg-main': '#E8E8E8',
'bg-card': '#F5F3F0',
'accent': '#007AFF',
}
clamp(),会回退到固定值backdrop-filterautoprefixer 自动添加浏览器前缀clamp() 在不支持的浏览器会使用中间值<div className="w-screen h-screen flex items-center justify-center bg-[#F5F5F5]">
<div className="w-full max-w-[450px] p-4">
{/* 内容 */}
</div>
</div>
<h1 className="text-fluid-2xl sm:text-3xl md:text-4xl font-medium">
标题
</h1>
<div className="top-[max(164px,18vh)] left-[max(32px,5vw)]">
{/* 混合使用 px 和 vh */}
</div>
<div className="bg-gradient-to-br from-[#667eea] to-[#764ba2]">
{/* 紫色渐变 */}
</div>
<button className="transition-all duration-300 hover:-translate-y-0.5 hover:scale-105">
按钮
</button>
npm run dev # 启动 Vite 开发服务器(热重载)
npm run build # 构建优化后的生产版本
npm run preview # 预览生产构建
.mobile-container 等@apply: 仅用于高频重复样式这两个页面保留了原 CSS 文件,原因:
@keyframes 动画使用 .safe-top 和 .safe-bottom 类处理刘海屏:
<div className="safe-top safe-bottom">
{/* 内容会自动避开刘海区域 */}
</div>
Tailwind v4 不直接支持 text-shadow,使用方括号语法:
<h1 className="text-shadow-[0_2px_10px_rgba(0,0,0,0.3)]">
带阴影的标题
</h1>
| 指标 | 迁移前 | 迁移后 | 改进 |
|---|---|---|---|
| CSS 文件数量 | 7 个独立文件 | 2 个(保留 video/chatbot) | -71% |
| 维护难度 | 高(重复样式多) | 低(原子化复用) | ⬇️⬇️ |
| 响应式支持 | 手动 @media |
内置断点前缀 | ⬆️⬆️ |
| 浏览器兼容性 | 手动前缀 | 自动处理 | ⬆️ |
| 开发速度 | 需写 CSS 文件 | 直接写 className | ⬆️⬆️⬆️ |
dark: 前缀添加暗色主题tailwindcss-animate 插件改造完成!现在项目已完全支持各浏览器和移动端的屏幕自适应 🎉