Web Design & UI/UX7 min read

成功消息的颜色:为什么 #00FF00 不行,以及该用的 8 种绿色

纯绿是大家挑选成功色时的第一选择,却是文字的错误选择。四个修复方法、来自 IBM Carbon 的八种浅色与深色成功色,以及可以直接交给开发者的代码。

By Boone
XLinkedIn
Success Message Color: Why #00FF00 Fails and the 8 Greens to Use Instead

成功文字的正确颜色是更深的绿色,而不是 #00FF00。纯绿看起来很清新,但在白底上依然难以阅读,在深色屏幕上还会刺眼。下面是四个修复方法、浅色与深色模式下要用的八种成功色,以及可以直接交给开发者的代码。

为什么纯绿不行

没人会特意选 #00FF00 作为成功文字。它是自己冒出来的。它是每个取色器第一行的绿色,是旧 CSS 里的 lime,是新设计文件里的第一个绿色。于是它就落在了告诉用户付款成功的那一行上。

纯绿明亮又饱和,所以看起来像「通行」。但亮度恰恰是问题所在。它是屏幕能显示的最亮的颜色之一,浅色文字放在浅色页面上,没有任何着力点。白色文字放在 #00FF00 上,和 #00FF00 文字放在白色上,都远远达不到 WCAG 对小字号文字的最低要求。

解决办法不是换一个色相。而是同一种绿色,调深到文字有分量为止,并且别把它用在最吵的表面上。

下面的绿色来自 IBM Carbon 设计系统,它发布了完整的绿色色阶,并为每种用途指定了具体的色阶。

修复 1:文字用更深的绿色

新密码

••••••••••••

✓ 密码强度很高。

✕ 白底上的 #00FF00:难以阅读

新密码

••••••••••••

✓ 密码强度很高。

✓ 白底上的 #198038:轻松易读

同一个输入框,同一条消息,两种绿色。正确的是 Carbon 的 green 60。它依然明显是绿色,而且是你的眼睛真正读得清的那个,尽管左边那个才是「更绿」的绿。

每一处成功文字都用这种更深的绿色:输入框下方的提示行、变绿的标签、行内的「已验证」标记,还有对勾图标本身。文字里完全不要出现 #00FF00。如果你的品牌绿接近纯绿,就把它留给插图和大号展示字体,在那里靠字号完成小字号文字靠深色完成的工作。

修复 2:横幅用浅色底,再配深色文字

✓ 已收到付款。我们已将收据发送至 mia@brainy.ink。

✕ #00FF00 上的白字:很吵,还是难读

✓ 已收到付款。我们已将收据发送至 mia@brainy.ink。

✓ #A7F0BA 上的 #044317:轻松易读

一条纯荧光绿的横条配白字,是页面上最吵的东西,却依然难读,因为 #00FF00 上的白字和白底上的 #00FF00 对比度一样弱。颜色互换了位置,问题却没有消失。

柔和的绿色容器配深绿文字,通过颜色传达「成功」,又让文字能被读清。成功是好消息,不该大喊大叫。Shopify 的 Polaris 系统也得出了同样的结论:它的成功表面色 #CDFED4 搭配深绿文字 #014B40。

横幅、Toast 和行内提示框都用浅色容器。纯绿填充只留给一件事:确认操作的那一个按钮,并在足够深、能承载标签的绿色上(例如 #198038)放深色或白色标签。

修复 3:深色屏幕上要柔化

站点状态

brainy-site 已上线

✓ 部署完成。

✕ 深色上的 #00FF00:刺眼

站点状态

brainy-site 已上线

✓ 部署完成。

✓ 深色上的 #42BE65:平静清晰

深色模式把建议翻转了过来。近黑底上的纯绿轻松通过对比度下限,所以检查工具不会报错。但它依然是错误的选择。完全饱和的绿色放在深灰上会发光、让眼睛疲劳,一列十个这样的绿更是让人不忍直视。

Carbon 的深色主题用的是更柔和、更浅的绿色,green 40,#42BE65。在 #161616 上它读起来轻松,没有刺眼感。这是深色主题的通用规则:在白底上好用的饱和色,到了深色上要变浅、变柔和。我们关于深色模式色彩系统的文章介绍了色板的其余部分,错误色的对应规则见错误消息的颜色。

修复 4:永远不要只用颜色

付款 1

$24.00,Mia Chen

✕ 只有一个圆点:哪笔成功了?

付款 1

$24.00,Mia Chen

✓ 已成功

✓ 对勾加文字:一目了然

两个列表都以灰度显示,就像色盲检查看到的那样。

拿一个绿点表示「已成功」,一个红点表示「失败」。用常见的亮度权重(红 0.299、绿 0.587、蓝 0.114)把它们转成灰度,结果几乎一模一样:

#FFFFFF

灰度下的绿点 #198038

#FFFFFF

灰度下的红点 #DA1E28

红绿色盲的人看到的状态列就是这样,在阳光下屏幕发白时,大致上任何人看到的也是这样。每个成功状态都需要三样东西:

  • 颜色:浅色下用更深的绿,深色下用更柔和的绿。
  • 形状:消息前面的对勾,不靠颜色也能看见。
  • 文字:发生了什么。「已收到付款」胜过一个绿点。

这就是 WCAG 1.4.1,颜色的使用:颜色可以辅助传达信息,但绝不能是唯一的方式。发布状态列表之前,先把屏幕切到灰度看一次(Mac 上是系统设置、辅助功能、显示器、颜色滤镜;iOS 和 Android 的辅助功能显示设置里也有同样的滤镜)。

8 种成功色,浅色与深色

点击任意色块即可复制色值。

浅色主题。点击颜色复制色值。
深色主题。点击颜色复制色值。
角色浅色深色用途
成功#198038#42BE65成功文字、对勾图标、成功边框
成功之上#FFFFFF#161616纯成功填充上的文字,例如「确认」按钮
成功容器#A7F0BA#044317横幅、Toast 和行内提示框
成功容器之上#044317#A7F0BA这些容器内部的文字和图标

深色主题不是一套新色板。它是绿色色阶中同样的四个色阶,只是角色对调了:容器色变成文字色,反之亦然。

把这些交给你的开发者

同样的八种颜色写成 CSS 自定义属性,深色值随系统主题切换:

css
:root { --color-success: #198038; --color-on-success: #FFFFFF; --color-success-container: #A7F0BA; --color-on-success-container: #044317; } @media (prefers-color-scheme: dark) { :root { --color-success: #42BE65; --color-on-success: #161616; --color-success-container: #044317; --color-on-success-container: #A7F0BA; } } .field--valid { border-color: var(--color-success); } .field__hint--valid { color: var(--color-success); } .alert--success { background: var(--color-success-container); color: var(--color-on-success-container); } .alert--success::before { content: "✓ "; }

Carbon 在它的绿色色阶上把这些命名为 green 60、green 40、green 20 和 green 80。不管你用什么系统,这四个角色名都值得偷师:它们能防止下一个人去拿 #00FF00。

还有一个相关的陷阱:iOS 的 systemGreen,#34C759,用在白底文字上太浅。Apple 把它用于开关和填充,那里由形状承载含义。别把它抄进正文文字里。

FAQ

成功消息应该用什么颜色?

一种在小字号下也易读的深绿色,例如白底上的 #198038。再配上对勾和一个说明发生了什么的词。

#00FF00 用作成功文字符合无障碍要求吗?

不符合。白底上的纯绿远远达不到 WCAG 对正文文字的最低对比度要求。请使用更深的绿色,例如 #198038。

成功横幅用什么绿色好?

用 #A7F0BA 这样的浅绿作为底色,再放上深绿文字 #044317。这一对颜色易读,而且不吵。

深色模式下成功应该用什么颜色?

更柔和、更浅的绿色,例如 #161616 上的 #42BE65。纯绿在深色背景上能通过对比度检查,但会刺眼、让眼睛疲劳。

成功状态可以只用颜色表示吗?

不可以。绿点和红点在灰度下看起来一样,而 WCAG 1.4.1 要求颜色绝不能是唯一的信号。请加上对勾和「已成功」或「失败」这样的文字。

来源

  • IBM Carbon 设计系统,颜色概览:green 60 #198038、green 40 #42BE65、green 20 #A7F0BA、green 80 #044317 和 gray 100 #161616。
  • WCAG 2.2,1.4.3 对比度(最低要求)和 1.4.1 颜色的使用。
  • 对比度使用 WCAG 相对亮度公式检查(#00FF00 上的白色与白色上的 #00FF00 均为 1.37:1;白色上的 #198038 为 5.02:1;#A7F0BA 上的 #044317 为 8.69:1;#161616 上的 #42BE65 为 7.57:1;#161616 上的 #00FF00 为 13.19:1)。灰度值使用 0.299、0.587、0.114 的亮度权重。
  • Shopify Polaris 的成功表面色 #CDFED4 搭配文字 #014B40,来自 @shopify/polaris-tokens 9.4.2。
  • iOS systemGreen #34C759 相对白色测得 2.22:1;参见 Apple 的色彩人机界面指南。
  • 密码表单、发送至 mia@brainy.ink 的收据、brainy-site 部署以及付款列表,都是为本页专门虚构的示例。
  • 最初以轮播图形式发布于 UX Brainy。

Want success, error and every other state designed as one system? Our team designs and builds product UI that holds up in light and dark.

Get Started

More from Brainy Papers

Keep reading