Tailwind CSS 模式和最佳实践
概览
Tailwind CSS 是一个基于公用类的 CSS 框架,它帮助开发者使用公用类而不是自定义 CSS 来快速且可维护地构建 UI。这种方法减少了在 HTML 和 CSS 文件之间的上下文切换。Tailwind CSS 使用基于公用类的方法,这有助于开发者快速构建 UI,与设计令牌保持一致性,轻松创建响应式布局,原生支持暗色模式,通过配置文件完全自定义,并通过 JIT 模式优化生产,自动移除未使用的样式。
为什么这很重要
- 提高开发速度:通过减少 UI 开发时间 30-50%
- 减少 CSS 包大小:通过清除未使用的样式,将包大小减少高达 80%
- 提高可维护性:一致的设计令牌提高可维护性
- 减少上下文切换:公用类减少在 HTML 和 CSS 之间的切换
- 提高一致性:一致的设计系统提高用户体验
核心概念
1. 公用类
单一用途的 CSS 类:
- 布局公用类:flex, grid, 间距公用类
- 排版公用类:字体大小,字体重量,文本颜色公用类
- 颜色公用类:背景颜色,文本颜色,边框颜色公用类
- 间距公用类:外边距,内边距公用类
- 尺寸公用类:宽度,高度公用类
- 边框公用类:边框宽度,边框颜色,边框半径公用类
- 效果公用类:阴影,不透明度公用类
2. 设计令牌
一致的设计值:
- 颜色:一致的颜色调色板
- 间距:一致的间距尺度
- 排版:一致的字体家族和大小
- 阴影:一致的阴影深度
- 边框半径:一致的边框半径值
3. 响应式修饰符
特定断点的样式:
- 断点前缀:公用类:在特定断点应用公用类
- 移动优先:默认样式适用于移动设备,在更大的断点上覆盖
- 断点:sm (640px), md (768px), lg (1024px), xl (1280px), 2xl (1536px)
4. 状态修饰符
特定状态的样式:
- hover:悬停时的样式
- focus:聚焦时的样式
- active:激活时的样式
- disabled:禁用时的样式
- group-hover:父组悬停时的样式
- peer-focus:兄弟聚焦时的样式
5. 暗色模式
暗色主题支持:
- dark::在暗色模式下应用样式
- darkMode:配置策略(‘class’ 或 ‘media’)
- 主题扩展:定义暗色模式颜色
- 切换:实现暗色模式切换
6. JIT 模式
即时编译:
- 自动清除:自动移除未使用的样式
- 任意值:支持任意值
- 变体:支持组件变体
- 性能:优化构建性能
快速开始
- 安装 Tailwind CSS:安装 Tailwind 和依赖
- 初始化配置:创建 tailwind.config.js
- 添加指令:向 CSS 添加 Tailwind 指令
- 自定义主题:用设计令牌扩展主题
- 构建组件:使用公用类构建组件
- 添加响应式:添加响应式修饰符
- 实现暗色模式:添加暗色模式支持
- 优化构建:配置清除和优化
- 记录模式:记录常见模式
# 安装 Tailwind CSS
npm install -D tailwindcss postcss autoprefixer
# 初始化 Tailwind
npx tailwindcss init -p
// tailwind.config.js
/** @type {import('tailwindcss').Config} */
module.exports = {
content: [
'./src/**/*.{js,ts,jsx,tsx,mdx}',
'./app/**/*.{js,ts,jsx,tsx,mdx}',
],
theme: {
extend: {},
},
plugins: [],
}
/* styles.css */
@tailwind base;
@tailwind components;
@tailwind utilities;
生产清单
- [ ] Tailwind CSS 安装并初始化
- [ ] 配置文件正确配置
- [ ] Tailwind 指令添加到 CSS
- [ ] 主题用设计令牌扩展
- [ ] 定义响应式断点
- [ ] 实现暗色模式
- [ ] 生产中清除未使用的样式
- [ ] 优化包大小
- [ ] 如有需要,创建自定义公用类
- [ ] 配置插件
- [ ] 优化构建时间
- [ ] 使用公用类构建组件
- [ ] 设计系统文档化
- [ ] 完成团队培训
- [ ] 测试浏览器兼容性
反模式
- 过度工程化:在简单项目中使用 Tailwind 增加不必要的复杂性
- 配置不良:不良配置导致样式不一致
- 缺少清除:不清除未使用的样式导致包大小大
- 设计不一致:不一致地使用设计令牌降低可维护性
- 性能差:不优化包大小导致加载时间慢
- 可访问性问题:不考虑可访问性限制用户基础
- 过度使用任意值:过度使用任意值降低可维护性
- 不组织类:组织不良的类难以阅读
- 忽略响应式:不考虑响应式设计导致 UX 差
- 不使用 @apply:不使用 @apply 重复模式导致代码重复
集成点
- React:React 与 Tailwind 集成
- Next.js:Next.js 与 Tailwind 集成
- Vue:Vue 与 Tailwind 集成
- Svelte:Svelte 与 Tailwind 集成
- PostCSS:PostCSS 集成
- Autoprefixer:供应商前缀
- Tailwind 插件:表单,排版,宽高比插件
react-best-practices用于 React 模式nextjs-patterns用于 Next.js 模式shadcn-ui用于使用 Tailwind 的组件库mui-material用于替代 UI 库
进一步阅读
- Tailwind CSS 文档 - 官方 Tailwind CSS 文档
- Tailwind CSS 插件 - 可用插件
- Tailwind CSS IntelliSense - VS Code 扩展
- 响应式设计 - 响应式设计指南
- 暗色模式 - 暗色模式实现
- 自定义配置 - 配置指南
- 最佳实践 - 最佳实践指南
- 性能优化 - 生产优化