tailwind-样式规范.md 3.5 KB


description: 前端应用的 Tailwind CSS 和 UI 组件最佳实践

Tailwind CSS 最佳实践

组件样式

  • 使用工具类而非自定义 CSS
  • 需要时使用 @apply 将相关工具类分组
  • 仅在必要时使用自定义组件样式作为 SCSS 模块,以提高组件的可读性和可维护性
  • 使用适当的响应式设计工具类
  • 使用适当的状态变体
  • 保持组件样式一致

设计令牌(Tokens)

  • 所有来自 Figma 的令牌都是程序化生成的,定义在 web/libs/ui/src/tokens/tokens.scss 文件中
  • 可以通过使用 Figma Variable Exporter 插件从 Figma 导出,替换 web/design-tokens.json 的内容,然后使用 cd web/ && yarn design-tokens 命令重新生成令牌
  • 重新生成令牌时,确保运行项目根目录的 make fmt-all 命令,以确保所有文件都经过检查和格式化
  • 不要使用未通过 Figma Variable Exporter 插件定义并在 web/libs/ui/src/tokens/tokens.scss 文件中建立的令牌
  • 不要使用任何默认的 tailwind css 类,只使用通过 web/libs/ui/src/tokens/tokens.js 文件定义的类

布局

  • 使用语义化间距工具类,例如 p-tight 而非 p-200--spacing-tight 而非 --spacing-200
  • 有效使用 Flexbox 和 Grid 工具类
  • 需要时使用容器查询
  • 实现适当的响应式断点
  • 使用适当的 padding 和 margin 工具类
  • 实现适当的对齐工具类

排版

  • 使用语义化排版工具类,例如 text-body-medium 而非 text-16--font-size-body-medium 而非 --font-size-16
  • 使用适当的字体大小工具类
  • 实现适当的行高
  • 使用适当的字重工具类
  • 正确配置自定义字体
  • 使用适当的文本对齐
  • 实现适当的文本装饰

颜色

  • 仅使用语义化颜色命名,确保深色模式兼容性,例如 bg-primary-background 而非 bg-grape-000--color-primary-background 而非 --color-grape-000
  • 实现适当的颜色对比度
  • 有效使用不透明度工具类
  • 正确配置自定义颜色
  • 使用适当的渐变工具类
  • 实现适当的悬停状态

UI 组件

  • web/libs/ui/src/shad 使用可用的 shadcn/ui 组件
  • 仅使用从 web/libs/ui 重新导出的 shadcn/ui 组件,而非 web/libs/ui/src/shad 中定义的原始组件
  • 在其他 libs 和 apps 中导入这些组件时应使用 @humansignal/ui
  • 正确组合组件
  • 保持组件变体一致
  • 实现适当的动画
  • 使用适当的过渡工具类
  • 牢记无障碍性
  • UI 组件应在 web/libs/ui 中定义和导出,并遵循代码组织的最佳实践

响应式设计

  • 使用移动优先方法
  • 实现适当的断点
  • 有效使用容器查询
  • 正确处理不同屏幕尺寸
  • 实现适当的响应式排版
  • 使用适当的响应式间距

性能优化

  • 使用适当的清除配置
  • 最小化自定义 CSS
  • 使用适当的缓存策略
  • 实现适当的代码分割
  • 为生产环境优化
  • 监控打包大小

样式组织

  • 按逻辑顺序排列工具类(布局 → 间距 → 排版 → 颜色 → 其他)
  • 使用一致的类名顺序
  • 将复杂的样式组合提取为组件
  • 使用 @layer 指令组织自定义样式

无障碍性

  • 确保足够的颜色对比度
  • 使用语义化 HTML 元素
  • 实现键盘导航支持
  • 添加适当的 ARIA 属性
  • 测试屏幕阅读器兼容性

最佳实践

  • 遵循命名约定
  • 保持样式有序
  • 使用适当的文档
  • 实现适当的测试
  • 遵循无障碍性指南
  • 使用适当的版本控制
  • 避免内联样式,优先使用工具类
  • 保持样式的可维护性和可读性