Design Token的解决问题方法与命名思考

用户头像
杭州/设计爱好者/3年前/997浏览
Design Token的解决问题方法与命名思考
用户头像
LainYin

Design Token作为对接设计师和前端的工具,已经在大公司内流行开来。希望这篇文章能给读者一些启发

背景

在项目的迭代升级中,面对设计趋势变化或者产品风格变化,需要对视觉进行调整。而在这过程中会遇到很多问题

1.设计、开发要修改某个样式的话,就会牵涉很多相同地方。需要重复修改;

2.修改一次之后,如果再修改还要花费同样的时间精力。可维护性差;

3.修改样式的过程中,总会有遗漏的部分;

4.设计师对样式的理解不同,导致同一场景下,使用了不同的样式。破坏了一致性;

5.设计稿还原的实际效果较差

这消耗了设计师和前端开发大量的时间。而这些问题用Design Token就能较好得解决

什么是Design Token

Design token是对设计样式,开发UI实现的管理工具。它构建和维护设计系统里所有的“值”,包括 spacing, color, typography,animation等。开发和设计用同一种语言对样式描述,双方的协作会更加方便

全局token

全局token是设计语言中的原始值,与背景无关,抽象度很高,常常被其他token继承使用。颜色、动效、间距、阴影、圆角等都可用于全局token。举一个例子,颜色的全局token:$red-1、$green-2

语义token

语义token更加具体化,有助于传达token的预期用途。比如$color-text-primary:$blue-7,它的意思是“主要文字的颜色”,而不是图标、背景、线框的颜色。

组件token

组件token比语义更加具体化了,把使用范围局限在组件中。更加有助于传达token的预期用途。比如$size-image-s:$size-3

为什么选择Design Token

已有的样式功能,比如sketch和figma的样式可以在很大程度上减少样式的修改。但是有多层次的Design Token能更细致地控制,从而减少修改的内容。

如下图,如果要修改“次要文字”的颜色 。方案一的情况下,需要把所有的涉及到次要的文字的地方逐一修改。而方案二只需要修改“color-text-secondary”一个地方

注意:现有的设计软件,如Figma、Sketch、即时设计、MasterGo软件自带的功能中都不支持多层次的Design Token。现在仅在Figma的插件中可以实现多层次的Design Token。

Design Token的优势

语义化:Design Token在名称就表示了它的使用场景。如下图所示,原始数值#26801b对于大部分设计和开发来说都想不出这是一个什么颜色。具体化为Blue-400时,就能知道这是一个颜色不深也不浅的。进一步具体化为color-primary-default,就能知道这是这个平台的主色。再进一步具体化为color-button-bg-default时,就知道这是按钮的背景颜色

可维护:把位于不同地方的同一个颜色,用一个Design Token管理。如果不复杂设计软件自带的样式功能也可符合使用需求

一致性:样式的用法使用文档记录下来,帮助设计师正确使用规范,减少人为的使用偏差。比如下图中描述了“危险颜色”、“警告颜色”、“圆角”的使用方法,设计师甚至前端开发可以查阅

Design Token如何解决问题

经过分析,发现核心问题在于四点“可维护性差”、“遗漏内容”、“样式使用错误”、“还原效果差”。通过Design token就可以很好解决这些问题。

解决方式:

1.Design Token能关联所有相同的地方,修改一个地方就可以修改所有相同的地方

2.Design Token关联好的地方,就不会出现遗漏了

3.对Design Token思考后,给出相对准确的样式使用规范,形成文档就可以减少这种情况发生

4.开发输入Design token时,会进行“联想”,这些都是已经设计预设好的值。所以出错概率更小

5.Design Token以样式作为核心考虑的内容,促使设计对所有样式审查,减少遗漏

Design Token命名

Token的类别

参考Semi Design、Ant Design、TDdesign、Deui、Gestalt、Corbon Design,最后提炼出Color、Spacing、Radius、Border Width、Shadow、Typography、Sizing这几个优先确定的类别

抽象的角度

抽象的缺点在于不同的人,甚至一个人也会对同一个东西产生多角度的看法。这种情况发生了,会让Design Token应用不方便。所以要约定大家认同的抽象方式,参考其他设计系统的使用方式。

如下图所示message/success组件中的背景,有两个方向进行抽象化,一个是从具体的元素——背景;另一个是从含义角度上抽象——成功。这里参考了较多的token规范,采取「含义」大于「对象」的方式。也就是使用“成功”

抽象的程度

上面我们提到了Design Token有三种:全局token、语义token、组件token。那么在应用的过程中,如何到底使用哪种token呢?

抽象到哪个程度取决于使用token的时候,是否方便。如果一个类别下全局token只有一个,那就没有意义具体到语意token,组件token。下图中要给image配对应的size,但是size一共有6种,且某些数值相近,不好分辨。实际上image的size token只有4种,使用组件token后,能快速判断设计稿使用了那个token。这样方便了Design Token的使用。

总结:当同级别、同类别Token较多的时候,使用更具体的token。因为如果不使用更具体的token,选择就会出现困难 。遵守上述方便使用的核心准则。size、typography、spacing、Chart组件的color都会从全局token具体到语义token或组件token使用。

如下图所示,如果一个系统内border width只有一个值,那么再具体到组件border width-input也不会方便选择。所以不要过度具象

命名结构

从Semi Design、Ant Design、TDdesign、Deui、Gestalt、Corbon Design和下图看,Design Token命名的结构并没有非常统一的认识。这就是上面所提到的人和人之间对事物抽象方式不同,导致难以形成统一意见的结果

最终决定参照国内命名最完备的Semi Design。组件token中元素顺序为,类别-组件-属性-状态(大小)

命名规则总结

1.size、typography、spacing和Chart组件的color token可以具体到组件token;

2.当抽象要从「含义」和「对象」选择时,优先选择「含义」,例如Success、Warning;

3.从全局token、语义token到组件token,每一次都是因为上一层token数量过多,导致使用困难。而细化使用范围的方式。若抽象的token就方便使用,不要具体化;

4.单词时间用“.”分隔,数字越小表示尺寸越小;

5.组件token中元素顺序为,类别-组件-属性-状态

形成文档

文档在Figma中完成,根据全局token、语义token、组件token划分为三块大内容。设计师与开发都可以在这里查阅这个基准文档。

结语

Design Token 作为较新的工具还没被普及开来,但已有很多大公司使用。并且在自己项目实践的过程中,极大提高了公司设计和研发团队的协作效率升。如果项目比较复杂,非常推荐使用

10
举报
|
8
分享
相关推荐
评论
用户头像
评论你的想法~
表情
喜欢TA的作品吗?喜欢就快来夸夸TA吧!
推荐素材
户外旅行飞机情侣假日出行
UI 登录界面设计模板包
【新年UI图标】30个图标
高级感金属拟物 UI设计组件库
我的钱包-UI界面设计-app
3D渐变流体抽象矢量UI背景图
原创UIUX交互橙红渐变炫酷视觉平面设计作品集模板PSD
新拟态风格 UI设计组件库
【新年UI图标】游戏/娱乐icon
高级表盘系列UI源文件
新能源APP应用UIKit
【新年UI图标】钱包icon
APP/小程序商业项目UI模板|99个高保真UI+79个原型
拟物风质感写实UI卡片合集源文件
UI通用设计素材1
【新年UI图标】影音icon
盲盒APP UI设计
【新年UI图标】汽车icon
【新年UI图标】会员icon
科技医疗透明柜UI界面设计
钱包ui模板
【新年UI图标】秒杀icon
UI_3D图标“一本秘籍”(源文件
你可能喜欢
相关收藏夹
大家都在看
登录注册