也可以看看我的 milanote [[我的 Figma Token 实践与测试]] ## 待分类 [[Design Tokens 画布.canvas]] 其实大部分前端组件库都是我那样的 基础的就叫 color-[colorName]-level 语义的就是 color-[semantic]-[state] 组件的就是 color-[components]--...-[size]-...-[state]-... ## 概念 设计工程化的重要环节· Token 实际上是将设计中的基础元素与具体的样式进行解耦。 ### W3C 官方 - Design tokens are indivisible pieces of a design system such as colors, spacing, typography scale. - Design tokens were created by the [[Lightning Design System]] team, and the name comes from them ([Jon](https://twitter.com/jonnyl) & [Jina](https://twitter.com/jina)). - 起源于 salesforce ![](https://chi-1259224060.cos.ap-shanghai.myqcloud.com/20221231135654.png) - [[Lightning Design System#^f4f6ab]] ### 微信设计 Design tokens 是存储样式值(如色值、字重)的载体。使用它,能简化设计系统的构建和使用,更能推进设计与代码的统一。[让组件库井井有条](https://mp.weixin.qq.com/s/jw8sfzb1NgYBWqjNLJu6Kw) Design tokens 的概念,能帮助设计师更有条理地理解和整理颜色变量、图层样式、控件等。 Tokens 分为 3 个类型: **Reference tokens** 这是最基础的一类 tokens。 其命名以 . Ref. 开头,指向一个静态值,如:表示颜色的十六进制代码( #E8DEF8 )、字重(Roboto Medium)。 ![[Pasted image 20220314200228.png]] **System tokens** 这是一种具备「环境感知」能力的 tokens,也被称作 alias tokens。 其命名以 . Sys. 开头,通常指向多个 reference tokens。具体指向哪个 reference token,将由上下文关系(如设备是否为全面屏、是否为深色模式)来决定。 下图所示的案例中, md. Sys. Color. Background 这一 system token 就会根据系统是否为深色模式来指向不同的 reference tokens: ![[Pasted image 20220314200405.png]] **Component tokens** 这是表达组成控件的元素、值(如元素内标题的字体、图标的的各个样式,或控件的具体状态)的 tokens。 其命名以 . Comp. 开头,通常指向 reference token 或 system token ### 海上星光 > Design Tokens 是一组有着统一命名规则的实体,用于储存视觉设计部分的具体参数,比如 HEX 色值、间距、尺寸等。使用它可以有帮助为 UI 开发工作维护一套具备可扩展性、一致性的视觉体系。 > [Vol 14 instagram正在打破原则、设计系统与代码开发的后半生 | 海上星光](https://hsxg.zhubai.love/posts/2125223110391013376) ## 类型 Token Type? 通常,我们把它们分为三类: ### Global tokens or Core tokens 例如:blue-700 ### Alias tokens Relates to specific context. 与特定的上下文有关。 例如:cta-bg-color ### Component-specific tokens relates to a component. 组件特定的令牌 例如:button-cta-background-color ## 命名方式 [The Design System Guide](https://thedesignsystem.guide/design-tokens) 命名需要时间。通常,团队会花费大量的脑力去寻找完美的逻辑。你可以在其他开放式设计系统中找到灵感,但这并不意味着它就适合你。我推荐一个研讨会来为您的用例找到最佳的结构。 好的命名应该是有下面的特征 1. Short 精简 2. Meaningful 有意义 3. Easy-to understand 易理解 4. Modular 模块化 5. Consistent 一致性 ### Color #### Global ![](https://chi-1259224060.cos.ap-shanghai.myqcloud.com/20221231165701.png) #### Alias ![](https://chi-1259224060.cos.ap-shanghai.myqcloud.com/20221231165803.png) #### Component-specific names ![](https://chi-1259224060.cos.ap-shanghai.myqcloud.com/20221231170210.png) ### Size ![](https://chi-1259224060.cos.ap-shanghai.myqcloud.com/20221231170759.png) ### States ![](https://chi-1259224060.cos.ap-shanghai.myqcloud.com/20221231170813.png) ## 好处 Benifits? ### Use of the same language. 改善团队之间的沟通。 ### Synced files. 一个真相的来源,所有平台的一致性。 ### Solid foundations. 稳定的设计系统带来价值。 ### Easy maintenance. 在一个地方编辑,同时更新所有内容。 ### Less design and technical debt. 花费的资源更少。 ### Brand consistency 品牌一致性,通过透明的视觉层次系统,创造新产品、保持一致性和管理品牌正变得更容易、更快、更便宜。 ## 最佳实践 ### 命名实例,以品牌色为例。 $color-background-button-primary-default 更多实例可以查看我的 [Notion](https://www.notion.so/uxchi/5efaa9689baf4dc0b3361fb90d6aee95?v=4cf49c469c8c43dfb6c0f6219ef775b0) 不过还没啥内容,就是随缘收集一些 Token 的案例。 ### 我的疑问 - Token 拆分的原则?例如 Bg 和 Fill? 我的想法是,为了灵活性拆开的好,例如品牌色蓝色时,链接 100%是和品牌色一致的,那要是品牌色算黄色呢? 换皮肤呢? #我的备注 - 要的,举个例子,现在青云控制台所有页面的背景色是 #e4ebf1 ,然后有些组件例如标签、进度条底色也是这个颜色,假设有客户定制了青云控制台,但嫌背景太深,要换成稍微浅一点的 #F5F7FA ,那就无法做到只改背景不改组件了 #网友Asorn 同理,切换主题时,区分开的好处就是可以单独控制。 - 同色号,不同命名,产生多个 token 是正常的吧?语义化为主。 - 如果色彩不多时,有必要跨过一层 Global gray-100 200 这种(一般适用于什么场景?),然后再引用嘛?感觉搞复杂了。 ### From Biscuit #MrBiscuit Global/Base Token 以名词命名 Alias Token 以功能性/实用场景命名 不过 Token (Figma 里叫 style variables) 不光是局限于颜色 像圆角、投影效果、Padding、Margin、描边粗、虚线、字号等等全都要 Token 化掉否则还不如用 #FFFFFF Hex 值收益高 再者就是到组件一层 Token 玩熟之后你们会发现有个概念叫 Mixin 就是多个 Token 组合成的 “一套” 这个给组件用起来要比每次分开写几十个 Token 更上道哦 ### 网友讨论 #### 20220525 ##### 顾魏 - 命名的规范![](https://chi-1259224060.cos.ap-shanghai.myqcloud.com/20220528101504.png) - 然后不做太细的 token,比如我们这里 bg 不会区分按钮的或者对话框的统一分为 4 级 background/surface/foreground/shape![](https://chi-1259224060.cos.ap-shanghai.myqcloud.com/20220528101220.png) - 然后比如 color 就分级来做 90%以上要用语义颜色,$dark.bg.background/$ dark. Storke. Hero. Actived 9%可以直接用调色盘,$dark.palette.5/$ dark. Palette.10 最后 1%找我来沟通 ##### 河马非马 这边的情况是 1. 因为移动端的通用组件库不完善和更新较慢,没法满足业务的开发节奏的需要—新增样式的场景很频繁,所以在业务文档中各自管理颜色样式,将样式管理的权限交给各业务设计师; 2. 颜色使用分为基础色板和功能色板,设计师根据具体场景来给颜色样式命名(所以样式的命名目前没有标准) 3. 设计师通过内部插件导出样式表给开发,开发直接引入到工程文件中,(目的是让设计师管理样式部分的代码,方便后期做主题管理和风格迭代) 4. 刚才提到的命名规范不统一更多是项目间的,因为不同的设计师命名习惯不同。同时在同一个项目中,因为设计师对非自己产出的样式其作用范围比较迷糊,也会需要沟通成本。 组织沟通会、或者在群里吼一声是一个方法,但感觉长久下去大家也容易忘。 现在想通过前期培训,让大家遵守一套命名规则(参考 < [https://www.figma.com/community/file/1096728307713953219>](https://www.figma.com/community/file/1096728307713953219>) ),然后在插件中录入这些选项,让设计师在新建样式的时候做选择题,而不是填空题 ## 资源 - [Design tokens - Fluent 2 Design System](https://fluent2.microsoft.design/design-tokens) 微软2023年5月最新 Fluent Design ,值得学习。![image.png](https://chi-1259224060.cos.ap-shanghai.myqcloud.com/20230528231252.png) - [Colors | Nord Design System](https://nordhealth.design/colors/#principles) 挺有参考价值的一个 alias 级别的 token。![image.png](https://chi-1259224060.cos.ap-shanghai.myqcloud.com/20230222155015.png) - [Design Token 资源汇总](https://www.yuque.com/uixxs/bilibili/oix8ik?) #草帽 的教学文档,非常适合新手。 - [(2) Rolling out design tokens to a branded house with 18+ products - Deborah Lindberg, Lewis Healey - YouTube](https://www.youtube.com/watch?v=m8ZSu9eCsQc) jira 团队的分享,感觉挺有价值。202302 ![image.png](https://chi-1259224060.cos.ap-shanghai.myqcloud.com/20230211104148.png) - [[Naming Tokens in Design Systems]] 设计系统专家。 - [大厂都在用! 万字干货带你读懂并应用 Design Token - 优设网 - 学设计上优设](https://www.uisdc.com/design-token-2) 还不错的一个中文教程。还介绍了 Figma 插件的使用。 - [Moon Design System](https://moon.io/tokens) Figma 里文件做的真不错。 - [Design tokens – Cloudscape Design System](https://cloudscape.design/foundation/visual-foundation/design-tokens/)