Design tokens 是一套全局的设计变量,用于存储和管理应用中所有关键的视觉设计决策,例如颜色、字体、间距、边框、阴影、动画等属性。它们通常以简单、机器可读的格式(例如 JSON、YAML 或 CSS 自定义属性)记录,并作为整个项目中的单一设计源泉,从而确保在不同组件、模块乃至多个平台之间实现设计一致性。
---
1. design-tokens.css:定义了所有设计变量
- 颜色系统(主色、辅助色、状态色、中性色、文本色等)
- 间距系统(基于4px的单位,从XS到XXL的预设值)
- 排版系统(字体、字号、粗细、行高、字间距)
- 尺寸与形状(边框圆角、边框样式、阴影)
- 组件尺寸(头像、按钮、输入框的尺寸变量)
- 动画与过渡(持续时间、缓动函数、预设动画)
- 布局(内容宽度、栅格、Z轴层级)
- 聊天相关的特定变量
2. utilities.css:基于设计变量的实用工具类
- 文本颜色与背景色类
- 排版工具类(字号、粗细、行高等)
- 间距工具类(margin、padding的各种方向与尺寸)
- 边框与圆角工具类
- 阴影工具类
- Flexbox布局工具类
- 显示与定位工具类
- 宽度与高度工具类
- 过渡与动画工具类
- 杂项工具类(截断、溢出、空白符处理等)
3. 更新了main.css,按照正确顺序导入设计系统文件
## 主要特点
- **统一性:**
设计令牌为所有 UI 元素定义了共享的视觉语言,不论组件或模块来自哪个开发团队,都能保持一致的样式。
- **可维护性:**
当需要更新设计规范时,只需要在设计令牌文件中统一修改,然后整个项目中的所有引用该令牌的样式都会自动更新,避免了多处硬编码样式的重复修改。
- **跨平台兼容:**
无论是在 Web、移动端或者其他前端平台,设计令牌都可以作为共享的视觉规范,帮助设计师和开发者保持一致的设计标准。
- **增强协作:**
设计师和开发者可以通过设计令牌建立一个共同的“语言”,设计师可以以令牌的方式定义 UI 的视觉元素,而开发者则可以在代码中直接引用这些变量,减少沟通隔阂和转译误差。
---
## 工作原理
1. **定义设计规范:**
设计团队首先确定项目所需的视觉元素,比如主色、辅助色、字体族、字号、边距等。
2. **转化为令牌:**
这些视觉元素转化为一组命名的变量,每个变量就是一个 design token。例如:
- `primary-color: #1e88e5`
- `font-family-base: 'Helvetica Neue', sans-serif`
- `spacing-small: 8px`
3. **集中管理与存储:**
这些令牌通常存放在一个全局文件中(如 JSON、SCSS 文件或 CSS 变量),项目中各个组件都通过引用这个文件来获取相应的视觉样式。
4. **开发中引用:**
开发者在编写 Vue 组件时,通过预处理器(例如 Sass/SCSS)、CSS 变量或者直接使用 JavaScript 模块导入设计令牌。例如,在 Vue 单文件组件的 `<style>` 部分可以这样引用 CSS 自定义属性:
```css
:root {
--primary-color: #1e88e5;
--font-family-base: 'Helvetica Neue', sans-serif;
--spacing-small: 8px;
}
.button {
background-color: var(--primary-color);
font-family: var(--font-family-base);
padding: var(--spacing-small);
}
```
---
## 实战意义
- **一致性:**
当你在 Vue 项目中使用 design tokens,所有组件都从同一组令牌中获取样式值,确保整体视觉语言保持一致,而无需每次都重复定义相同的值。
- **灵活性:**
设计令牌可以根据产品需求进行主题切换(例如,深色模式与浅色模式),只需切换令牌的值,而不用修改组件本身的代码结构。
- **协同工作:**
设计团队和开发团队可以各自独立地工作。设计师更新设计令牌后,通过版本控制和同步机制,开发团队就能自动获取新的视觉设计,而且不需要重新编写大量 CSS 代码。
---
## 总结
设计令牌系统(design tokens system)就是一组全局的、可复用的设计变量,它充当了设计与代码之间的桥梁,帮助你在 Vue 3 项目中实现统一、可维护、灵活且高效的视觉风格。通过集中管理和使用设计令牌,你能够快速响应设计变化,确保产品在跨平台和多组件情况下保持一致的用户体验。