手把手教你推导一套色彩体系

4 评论 9888 浏览 61 收藏 23 分钟

编辑导读:我们看到红色能够感受到热情、兴奋和危险,看到绿色时往往就感受到安全、自然和平静。可以说,颜色调动我们的情绪只需要一瞬间,而且它在我们的记忆中可以停留更久。本文作者围绕色彩体系展开五个维度的分析,希望对你有帮助。

前文的原子设计中我曾经讲过,原子是构成所有元素的最小单元,没有办法再被细分。它通常对应着产品设计中的通用样式及构成组件的最小颗粒。而颜色,作为整个设计系统中极为重要的原子之一,在心智模型中占据了关键的地位。

我们看到红色能够感受到热情、兴奋和危险,看到绿色时往往就感受到安全、自然和平静。可以说,颜色调动我们的情绪只需要一瞬间,而且它在我们的记忆中可以停留更久。

接下来,我结合公司目前的业务CROV Dropshipping(以下简称DS),来进行色彩体系的探索,以输出一整套的色彩方案。但愿这次探索能够给予各位一点启发。

一、业务背景

CROV DS是针对美国市场的线上一件代发平台(类似阿里巴巴的一件代发业务),属于跨境电商B2C行业。平台帮助用户无需任何初始成本、无需囤货即可顺利开展电商之路,时间灵活可控,让用户专注于销售本身。

二、为什么我们需要色彩体系?

1. 对于业务

目前CROV DS业务日益繁杂,但是除了品牌色之外,辅助色的定义过于随意。而且随着业务场景的扩展,临时增加的颜色很容易被遗漏在某个不知名角落的画板中,导致一次性用色的风险。(tips:一次性即前一篇我所讲到的用完即扔、未被复用的设计)

而且用色本身的随意也导致研发还原结果的不统一,一处地方色彩各异的现象比比皆是。

因此,我们需要基于我们自身的业务特征来产出一套足够完善的的色彩体系,让业务从用色上达成基本的一致统一。

2. 对于设计师

我们设计师在定义颜色时,更多得是直接在色板上进行取色,但这样的取色方法存在诸多弊端。

1)增加决策

可能很多设计师选色时会有这种情况,一会觉得这个颜色脏了,一会又觉得那个颜色太刺眼了,有时候完美主义作祟,为了得到一个满意的颜色甚至花上大半天。这种情况尤其在多色搭配时更为严重。

其实这和不用网格系统来布局是一个道理(注:网格系统是一种能够极大提升布局效率的方法,后面会讲)。

色板中取色的范围趋近于无穷。如果将HSB模式下的单个H、S和B作为一个最小单元格,那么我们可以选择的格子高达数百万个。颗粒度过细的情况(其实根本就没有颗粒度)导致我们在取色时往往会被迫进行反复的微调和尝试。

2)缺乏秩序和逻辑性

直接在色板中取色主要依赖的是“直觉”这种相对感性的存在。

比如一个按钮的状态可以包括normal、hover、pressed、disable等多个状态,如果我们仅仅靠自己的直觉自由调整明度和饱和度,最后的配色方案其实缺乏内在的逻辑性和秩序性。

3)难以复用

对于B端这些偏后台工具、场景复杂的业务,颜色运用得往往也比较广泛,如果我们没有一套完善的色彩体系,那每次一遇到新的项目及业务场景需要用到新的颜色时,之前定义的颜色难以复用,导致我们需要重新定义颜色。而且这种相对主观的方法也缺乏说服力,难以体现专业度。

而如果设计师提前定义好一套色彩体系,一方面只需要在对应的色板中选择即可,大大减少了设计决策。另一方面色彩体系所提供的不同色彩梯度也便于各个需求、业务场景的复用。而且色彩体系富有逻辑和秩序,因此从中挑选的颜色也同样是这样,显著降低设计师依赖“直觉”所带来的主观和不可控。

三、如何创建一套色彩体系?

Alipay Design团队提过:

以同色系配色为主导,多色搭配为辅。

同色系为统一的色相,使用中可以加深品牌色的感知,可以让界面更有层次,同时可以让界面保持色彩上的一致性;由于业务的多样化,我们需要多色搭配为辅;多色的辅助颜色,也可称之为功能色,可设定不同的任务属性和情感表达;再搭配中性色黑白灰,赋予更多的变化和层次。两种配色通过主次、使用比例,可灵活运用在业务的各个场景中,具有非常好的延展性。

接下来我以DS项目为例进行色彩体系探索——

首先,所有的色彩模型统一采用HSB模型进行,正如Ant Design设计团队说的那样,这个模型利于调整色彩时对颜色有明确的心理预期,同时便于团队沟通。

这里再简单普及下HSB模型。H指的是色相(Hue),S指饱和度(Saturation),B指明度(Brightness)。S控制颜色混入白色的量,S值越高,意味着混入白色的量越少,颜色也就越“纯”。B控制颜色混入黑色的量,B值越高,意味着混入黑色的量越少,颜色也就越“亮”(通俗点说,它们分别代表了明色区域和暗色区域)。

1. 品牌色

Crov Dropshipping基于其时间自由灵活、可兼职副业、成本风险低的业务特征,使得对应的用户群越来越多得集中在年轻一代的e-tailer(线上零售商)当中。他们不同于我们常规认知里那类传统的retailer(线下实体零售商),大部分的DSer拥有自己的事业和工作,为了赚取外快,将其当做自己的副业。因此,年轻化是这类用户群的主要标签。

所以,我们采用了高饱和度、偏向蓝色色相的紫色,来作为crov dropshipping的品牌色。它的HSB值是 (250,80,100)。

2. 基于品牌色生成24色“彩带”

为了覆盖掉Crov DS本身复杂的前后台业务场景,需要额外搭配各类型的辅助色。我们想要提取24类色相,所以直接通过360/24得出了色环中每类色相的基本角度15°。

因此,这里以品牌色色相为基础,在HSB 360°色环中,对色相(H)正向和反向各自±15°,饱和度(S)和明度(B)保持不变,得到24色的色环彩带。

后续我们的颜色体系就在彩带上的24个颜色上面进行提取。

3. 品牌色同色系配色

品牌色同色系是指,根据品牌色不同的饱和度和明度变化,生成不同深浅、不同明暗的一组颜色。同色系配色不仅传达了品牌性,多个梯度的变化也能够适应及通用尽可能多的业务场景,也便于多信息的层级划分。

而同色系配色的输出则遵循了antDesign发明的tint/shade 色彩系统算法,说人话,就是在颜色中分别加入一定比例的黑色或者白色来更科学得生成色阶。

sketch中可以直接将这套算法可视化处理,便于设计师直接生成所有颜色的色阶。需要注意的是明色区(就是上方横向的那块取色区域,白色至纯色时S由0过渡至100)和暗色区(右侧纵向的取色区域,纯色至黑色时B由100过渡至0)遵循了两种不同的规则,具体规则见下:

当S饱和度变化时(明色区域),S值以S/5的结果值为一个增量进行递减,B值以(100-B)/5的结果值为一个增量进行递增。我们品牌色的S和B分别是80和100,所以这里的两个增量分别是16和0。

品牌色在明色区的下两个色阶对应的HSB参数就是(250,64,100),(250,48,100),以此类推。

而当B明度产生变化时(暗色区域),S值以(100-S)/5的结果值为一个增量进行递增,而B值以B/5的结果值为一个增量进行递减。得出的两个增量分别为4和20。

品牌色在暗色区的下两个颜色对应的HSB参数即(250,84,80)、(250,88,60),剩下的所有颜色以此类推。

根据这两个定义规则推导出全部不同梯度的色阶,我们就可以将其作为品牌色同色系配色。

4. 定义辅助色

我们使用品牌色来传达品牌价值,还需要辅助色来满足多样化业务场景的需要,对用户进行不同的情绪引导,同时也可以缓解用户对单一主色产生的视觉疲劳。

辅助色的定义就可以直接用到我们之前基于品牌色所衍生出的24色“彩带”了。我们通过色环形式,来迅速得出品牌色的同类色、类似色、邻近色、中差色、对比色和互补色。

结果见下:

首先,由于相差15°的同类色与品牌色差距过小,色相对比感微弱,传递的调性过于相似,所以这里直接pass。而邻近色生成的粉色和青色在界面中基本不会作为功能色使用,这里同样直接舍弃。

1)类似色

类似色即色相差在30度左右的颜色,属于较弱对比色。我们基于品牌色的色相各自±30得出类似色。由于H280的类似色调性与品牌色类似,并且色彩体系中需要一个典型的冷色来覆盖一些场景,所以这里使用了H220的颜色作为冷系的辅助色。

2)中差色

中差色即色相相差90度左右的颜色,属于中等对比色。H340偏粉,与常规红色相差过多,所以这里借鉴了alipay的辅助色校正原则“色相差值不能超过15”,对H340进行了色相校正,调整至H355。

3)对比色

对比色即色相相差120度左右的颜色,属于强对比色。最后得出的H130调性与中差色的H160过于类似,直接舍弃。H10与H340调性类似,但是可以向橙色系发展,所以微调到同类色进行色相校正。

4)互补色

互补色即色相相差180度左右的颜色,属于高强度对比色。最后得出的H70偏绿,这里同样进行了色相校正,将其调整为H55。

最后,得出了共计5种辅助色。不过这些辅助色并不能直接使用,还需要进行感官明度的校正。

5. 感官明度校正

感官明度校正方法来自支付宝设计团队,这是是确认辅助色的最后关键一环。每种颜色都有属于自己的“感官明度”,即发光度。品牌色即辅助色的发光度不一致,就会导致视觉上会有明显的明暗差别。所以,我们需要通过发光度来进行最终的颜色校正。

明度较高的灰色意味着高发光度,明度较低则意味着低发光度。保持品牌色发光度不变,我们对其他辅助色进行微调。

我们只需要将那些视觉明暗差距明显的颜色进行调整。注意,并非所有的颜色都要调整到品牌色的感官明度,这些值仅仅是一个参考。最终的校正依然取决于我们的视觉!比如黄色感官明度本身很高,但是视觉缓和、不像绿色那么刺激,所以基本无需校正。

最后得到校正后的如下辅助色。蓝色、绿色、黄色以及红色在界面中可以作为功能色使用,可以分别代表常规、成功、警告和报错状态。而橙色则可以用做突出类的提示信息,它比bold字重要高出一个层级。

6. 辅助色的同色系配色

与品牌色一样,使用tint/shade规则推导出全部辅助色不同梯度的色阶。具体过程不再赘述~

7. 定义文本色

CROV DS的文本色并非纯粹的中性色,我们通过加入一点点品牌色来让文本呈现色彩倾向,以此提升页面的活力及年轻感,同时也可以让界面更加耐看,减缓B端产品长期使用时的视觉疲劳。

具体方法就是,分别在#222、#555、#888、#b3b3b3的一、二、三级中性文本色代表的色块上,覆盖一层10%透明度的品牌色。最后得出了四个层次的文本色。当然,中性文本色你也可以参考antDesign中通过透明度进行定义的方法,不一定需要按照某个具体色值来。

四、WCAG无障碍测试

我们必须要承认的现实是,设计师所定义出的色彩在mac上看上去是很出彩,但是这并不能代表所有用户。也许在用户中依然有一部分人群,他们的显示器配置低和老旧。而且我们无法判断用户们的使用环境,有可能是在刺眼的阳光下、有可能是在昏暗的环境中。如果色彩不去做可用性测试,在很多的情况下存在体验降低的风险。

而WCAG(Web Content Accessibility Guideline,Web内容无障碍指南)解决的正是这些障碍问题。WCAG中的POUR无障碍原则包括了:易于感知的(Perceivable)、便于操作的(Operable)、稳定理解的(Understandable)、稳定耐用的(Robust)。

而颜色则正是对应了易于感知的这一无障碍原则。网站中的文字和图像应该具备足够高的色彩对比度,使之更易被用户感知识别。

WCAG颜色对比度无障碍的两个标准分别为:【1.4.3条例:最小对比度标准】和【1.4.6条例:加强对比度标准】,分别对应着AA级和AAA级。

AA级的定义为:普通文本的视觉呈现与背景至少要有4.5:1的对比度,大文本与背景至少有3:1的对比度

AAA级的定义为:普通文本的视觉呈现与背景至少要有7:1的对比度,大文本与背景至少有4.5:1的对比度

(这里的大文本即≥18pt常规字重的文本或者≥14pt加粗字重的文本)

这两个条例被大厂们广泛运用到了产品的颜色标准当中。

比如MD规范中的文本移动性规范标准中的数据就是来自WCAG的1.4.3条例标准。

同样,阿里巴巴在前不久发布的B-Design中的无障碍色acs指标和WCAG本质上也是一样。

五、颜色对比度验证

那该如何验证我们的颜色符合这俩标准呢?

easy。这里直接上个网址,https://contrast-ratio.com/#%23373247-on-%23fff

我们分别在背景及文本录入色值,即可得到最终的对比度数据。比如我录入了白色和一级文本色数值,最后的12.28即两者的对比度,嗯,达到了AAA级标准。

一样的步骤,分别测试了其他文本色的对比度(产品无暗色模式,所以此处仅验证白色背景下的颜色对比度),分别达到了7.59、4.71和2.38。可以看出除了2.38外,其他文本色的对比度均符合可见度最低标准。

不过WCAG中指出,一些特殊情况下的文本无最低对比度的限制,其中就包含了表单字段的占位符(placeholder)。而2.38对比度对应的文本色主要用于暗提示,因此这种情况就可以无视掉了~

六、最后

色彩体系的初步探索到此结束了,不过篇幅原因并没有面面俱到,比如渐变色、实际落地效果等等。另外,一些地方我自己也在摸索阶段,因此很多分析也可能存在不足,文章仅作参考。

但愿这篇文章对你有所帮助。

参考文献:

Ant Design 色板生成算法演进之路

Antdesign-color

色彩无障碍设计(Color Accessibility)之「对比度」的探索

用一个实战项目,帮你掌握科学的 UI 配色方法

内部教程!超详细的支付宝设计规范之配色篇

Material Design-text legibility

 

作者:Andrewchen;微信公众号:转行人的设计笔记

本文由 @Andrewchen 原创发布于人人都是产品经理,未经许可,禁止转载。

题图来自 Unsplash,基于CC0协议。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 正负15度咋得出来24色的,没听明白

    来自北京 回复
    1. 我也是这个没看懂

      来自福建 回复
    2. 以自己的品牌色为准,SB保持不变,只在H值不断加15,15×24=360刚好一圈,假如你的H值是366,那就是超过了6度,那这时候H值就是6,接着下一个H值就是6+15了

      来自广东 回复
    3. 取值的时候会有超出色域提醒。比如我H值取242,它只能表示240.我是不是可以用240呢

      来自浙江 回复