深色模式别再用纯黑。
纯黑配白字伤眼睛,也让层次变平。改用深灰,用光线抬起表面,把颜色调柔和。一份实用的深色模式指南。
深色模式早就不是小众设置了,而多数深色主题选错了黑。纯黑,也就是 #000000 那种,在色卡上看着有力,放到屏幕上就变得折磨人。如果你的深色主题让人眯眼,通常就是这个原因。
Google 在做 Material Design 时学到了这一点,最后推荐的基础表面是深灰 #121212,不是黑。理由不是审美,而是眼睛的工作方式,以及深色环境里层次如何被读出来。下面是实用版本,只讲真正要紧的规则。
要点
- 不要从 #000000 出发。从 #121212 附近的深灰开始,把它当作你的画布,这也是 Material Design 推荐的值。
- 纯黑上的白字是屏幕能产生的最大对比。它会造成光晕和眼疲劳,对散光读者最难受。
- 用光线而不是阴影来建立层次。在深色里,更高的表面就是更亮的表面。
- 把品牌色降饱和、提亮,然后重新检查对比度。在白底通过的颜色,在深色底常常不通过。
- 深色模式是它自己的一套设计,有自己的规则,不是一个你顺手翻开的滤镜。
为什么纯黑是错的默认值?
因为它把对比推过了有帮助的那个点。纯黑上的白字是屏幕能做出的最大对比,而眼睛要为此付账。光在字母边缘晕开,这个现象叫光晕,它对散光读者打击最重。Material Design 自己的指南也这么说:深灰表面上的浅色文字对比低于黑色表面,深灰也能减轻眼疲劳。
这不是一小段时间。一个折磨人的深色主题,面对的是每一个打开它的读者,在长时间阅读中,慢慢厌倦你的产品。舒适本来就是深色模式的全部意义。最大对比悄悄把它扔掉了。
背景该用什么颜色?
深灰,不是黑。Material Design 推荐 #121212 作为基础表面,这是个不错的起点。它读起来仍然是深的,仍然有质感,但它不再跟读者对着干。纯黑变成一个少见的点缀,而不是整个房间。
这里有一个要如实说的取舍。在 OLED 屏上,纯黑像素会关闭并省电,这也是有些应用去拿 #000000 的原因。但你的表面上承载着真实内容:明亮的照片、彩色卡片、鲜艳的品牌图形。放在纯黑上,这些全都会窜到刺眼的对比。对任何人们要看超过一瞬的东西来说,那点省电换不来这份负担。
没有阴影怎么做出层次?
你靠把表面变亮来抬高它,而不是在下面投一层阴影。在浅色主题里,高度来自阴影。在深色里阴影没有落脚处,所以它消失了。Material 的解法是让表面随着升高而变亮。层级越高,就越往白的方向抬。
底层实现是把一层半透明白色叠加合成在 #121212 基础上,表面越高,叠加层越不透明。你不需要记这套算法。你需要记这条规则。更高就是更亮。仅这一个动作,就给深色界面带回了它在平坦黑色虚空里本会失去的层次。
如果你想要具体数值,Material 公布了它们:
| 高度 | 白色叠加层不透明度 |
|---|---|
| 0 dp | 0% |
| 1 dp | 5% |
| 2 dp | 7% |
| 3 dp | 8% |
| 4 dp | 9% |
| 6 dp | 11% |
| 8 dp | 12% |
| 12 dp | 14% |
| 16 dp | 15% |
| 24 dp | 16% |
你的品牌色怎么办?
调柔和。在白底上唱得响的高饱和色,放到深色画布上会震动,把眼睛累坏。给它们降饱和、提亮,往平静的方向拉回来。目标是清晰和舒适,不是响亮。
然后重新检查对比度,因为深色模式会打破你以前的假设。一个在白底上达到 WCAG AA 4.5 比 1 门槛的文字颜色,在深色背景上可能悄悄不达标。单独测试深色主题。它是另一块表面,算的是另一套数。
深色模式是它自己的一套设计
它不是你在最后顺手翻开的滤镜。它是同一个产品的第二次设计,有自己的画布、自己的层次模型、自己的颜色。选一个 #121212 附近的深灰,用光线抬起表面,把颜色调柔和,并重新检查每一个对比数值。这些都不难。而它们合起来,就是人们愿意留下的主题和人们想逃开的主题之间的差别。
界面之所以毫不费力,多半就来自这样的小规则。想看另一条影响同样大的,读下面 费茨定律如何决定你的按钮是好按还是别扭。
常见问题
深色模式该用纯黑吗?
不该。纯黑配白字是最大对比,会造成光晕和眼疲劳,对散光人群尤其明显。用 #121212 附近的深灰作画布,把纯黑留作少见的点缀。
深色模式背景该用什么颜色?
用深灰而不是 #000000。#121212 附近是个不错的基础。把抬高的表面稍微调亮来表示层次,因为在深色里你没法靠阴影做深度。
深色模式里怎么用品牌色?
降饱和并提亮。在白底上看着合适的高饱和色,在深色画布上会震动,而在白底通过的对比度在深色上可能不通过,所以要重新检查文字的可读性。
参考来源
- Material Design m2.material.io
- WCAG AA 4.5 比 1 门槛 w3.org