共有 26 个标准颜色角色,按照 6 大类进行组织:主色(primary)、次色(secondary)、第三色(tertiary)、错误色(error)、表面色(surface)、描边色(outline)。
颜色角色就像“数字填色画”里的数字,它们是 UI 元素与颜色分配之间的“连接组织”,决定界面中每个元素应该使用什么颜色。
无论你使用的是静态基础配色方案,还是动态配色方案,都需要使用这些颜色角色。如果你的产品中包含自定义组件,也必须正确映射到这一套颜色角色中。
整个配色系统建立在可访问的色彩配对之上,这些配对能保证至少 3:1 的对比度,满足可访问性要求。
颜色角色在设计和代码中通过“设计令牌”(design tokens)实现。设计令牌是设计系统中一条可复用的、原子级的视觉决策。

以下是你在颜色角色(Color Roles)名称中经常会看到、并需要理解的关键术语:
为了确保视觉无障碍(可达性)与足够对比度,你必须按照规范中推荐的“配对”和“叠加顺序”使用颜色角色。如果你随意组合颜色,可能会破坏必要的对比度,导致无法阅读。尤其在动态取色(如用户调节对比度)生效时,会进一步放大问题。

强调色角色包括 Primary(主强调色)、Secondary(次强调色)、Tertiary(第三强调色)。 在 UI 中应根据元素的重要性和所需的强调程度进行分配。 如果为了视觉效果随意更换强调色角色,要慎重,因为会影响层级与可访问性。
主强调色(Primary roles)用于最重要、最需要突出显示的操作或元素,例如用于“新建消息”的 FAB(悬浮操作按钮)。
次强调色(Secondary)用于不需要立即关注、也不需要强强调的元素,例如导航图标的“选中状态”,或一个“取消/忽略”类按钮。
第三强调色(Tertiary)用于体量较小但需要一定强调、但不要求立刻关注的元素,例如 badge(徽章)或提醒通知。

在整个 UI 里,把 主色(Primary)相关的颜色角色用在最醒目、最重要的组件上,比如 FAB(悬浮操作按钮)、高强调按钮、以及各种激活态。


将 次级色(Secondary) 用于界面中强调程度较弱的组件,例如 筛选标签(Filter chips),次级色包含四种角色:


将第三强调色(Tertiary)用于在视觉上与主色(Primary)和次级色(Secondary)形成互补的强调色,或用于需要额外吸引注意力的区域,例如 输入框(Input field)。
1. 第三强调色(Tertiary)用于表面(Surface)上的 互补色填充、文字与图标。
2. 第三强调色前景色(On tertiary)用于显示在第三强调色(Tertiary)背景上 的文字与图标。
3. 第三强调色容器色(Tertiary container)用于表面上的 互补色容器背景,常见于如 输入框(Input field) 等需要额外视觉吸引力的组件。
4. 第三强调色容器前景色(On tertiary container)用于显示在 第三强调色容器色(Tertiary container)背景上 的文字与图标。

第三强调色(Tertiary)角色可由设计师根据场景自由使用,其存在旨在为系统提供更丰富、更灵活的色彩表达能力。

使用 错误色(Error) 来传达错误状态,例如:输入框中输入了错误的密码。
错误色体系包含四种角色:
1. 错误色(Error):用于表面(Surface)上的 高注意力填充/图标/文字,强调紧急性或需要立即处理的状态。
2. 错误前景色(On error):用于显示在 错误色(Error)背景上 的文字与图标。
3. 错误容器色(Error container):一种更柔和但仍具有注意力的 容器背景色,用于承载错误提示内容。
4. 错误容器前景色(On error container):用于显示在 错误容器色(Error container)背景上 的文字与图标。
错误色(Error)是一个 静态色(Static color) 的典型例子:即使在 动态色彩(Dynamic color) 模式下,它也 不会随系统配色源发生变化。在任何动态配色方案中,错误色体系仍保持静态。但它依然会自动适配 明亮模式(Light theme) 与 暗色模式(Dark theme) 的对比需求。

使用 表面色(Surface)体系 来提供中性背景;对于卡片(Card)、底部面板(Sheet)、对话框(Dialog)等组件,则使用相关的 容器色(Container colors)。
三种表面基础角色:

五种表面容器角色,这些角色根据强调层次(Emphasis level)区分:
1. 表面容器·最低强调(Surface container lowest)最低视觉强调的容器背景色。
2. 表面容器·低强调(Surface container low)较低强调的容器背景色。
3. 表面容器(Surface container)默认容器背景色。
4. 表面容器·高强调(Surface container high)较强视觉强调的容器背景色。
5. 表面容器·最高强调(Surface container highest)强调度最高的容器背景色。
表面容器色是默认角色,但其他容器层级在大屏布局中尤其有助于构建层级关系与嵌套容器。
最常见的表面配色结构是:表面色(Surface)用作大面积背景区域,表面容器(Surface container)用于导航栏(Navigation Bar)等区域背景
文字与图标通常使用:表面前景色(On surface)和表面前景变体色(On surface variant)

所有颜色映射 ,尤其是表面类颜色, 在不同窗口尺寸等级的布局区域中都应保持一致。例如,在手机和平板上,正文区域都使用 Surface(表面色),导航区域都使用 Surface container(表面容器色)

根据所需的层级、功能区域和设计逻辑,在更大的窗口尺寸等级中,你可以使用附加的 Surface(表面色)系列颜色,只要这些颜色的应用保持一致即可。
在这个示例中,主体区域(body)和导航区域(navigation)在不同窗口尺寸等级中始终使用相同的颜色角色(分别为 Surface(表面色)与 Surface container(表面容器色)),并在更大的尺寸中额外加入其他 Surface container(表面容器色)层级。
默认情况下,诸如导航栏、菜单或对话框等中性色组件,会被映射到特定的 Surface container(表面容器色)角色;但设计者可以根据用户需求重新映射这些角色

反向颜色角色(Inverse roles) 会被选择性地应用在特定组件上,用来实现与周围 UI 颜色相反的视觉效果,从而形成更强的对比。


用于 Surface(表面色)之上的两种描边相关颜色如下:



大多数产品都不需要使用这些附加色彩角色(Add-on roles)。但对于某些需要更高灵活性与色彩控制的产品来说,这些附加角色会非常有用。如果你不确定你的产品是否需要使用附加色彩角色,那通常意味着:你完全可以忽略它们。
主强调色固定(Primary fixed)、次强调色固定(Secondary fixed)、第三强调色固定(Tertiary fixed)是用于“表面(Surface)”之上的填充色(fill colors)。这些颜色在浅色主题(Light)与深色主题(Dark)中保持相同明度(Tone),而普通的容器颜色(Container colors)在不同主题下会改变明度。当你需要色彩在明暗模式中完全一致时,就可以使用“固定(Fixed)”角色来替代对应的容器色角色。
主强调色固定·深(Primary fixed dim)、次强调色固定·深(Secondary fixed dim)、第三强调色固定·深(Tertiary fixed dim)相比于普通的固定色,这些“固定·深(Fixed dim)”具有更深、更突出的色调(Tone)。适用于以下场景:当你需要颜色更浓、更强调,但仍保持“固定色在明暗模式不变”的特性时。

固定强调色(Fixed)与固定强调色·深(Fixed dim)角色,适用于主强调色(Primary)、次强调色(Secondary)、第三强调色(Tertiary)三个色彩组, 并在浅色(Light)与深色(Dark)主题中统一展示。请注意:这些颜色在不同主题之间保持完全一致,不会随明暗模式而变化。



固定强调前景色(On fixed colors)用于显示在对应固定色(Fixed color)背景上的文字与图标。例如,主色固定前景色(On primary fixed)用于主色固定色(Primary fixed)背景上的文字与图标。同样的规则也适用于次级固定色(Secondary fixed)与第三强调固定色(Tertiary fixed)。
固定强调前景变体色(On fixed variant colors)用于在对应固定色背景上显示低强调的文字与图标。例如,主色固定前景变体色(On primary fixed variant)用于主色固定色(Primary fixed)背景上的低强调文字与图标。同样的规则也适用于次级固定色(Secondary fixed)与第三强调固定色(Tertiary fixed)的变体色。


有两个附加的表面色角色(add-on surface roles):


默认表面色(Surface) 会在浅色与深色主题之间自动反转 —— 在浅色主题中呈现为较亮颜色,在深色主题中反转为较暗颜色;但 表面明亮色(Surface bright) 与 表面昏暗色(Surface dim) 的反转方式略有不同。更准确地说,它们会在浅色与深色主题中 保持彼此之间的相对明度关系不变。
例如:如果界面区域使用的是 默认表面色(Surface),那么这个区域在 浅色主题中是最亮的区域,而在 深色主题中则变为最暗的区域。如果界面区域使用的是 表面明亮色(Surface bright),那么这个区域在 浅色主题和深色主题中都会保持为最亮的区域。



有0人收藏了本文