晚上关灯刷手机,突然弹出一个刺眼的白色图标,眼睛瞬间被闪到——这种体验很多人都经历过。随着暗黑模式在各类App和系统中普及,图标的视觉表现也得跟上节奏。设计一套适配暗黑模式的图标,不只是换个颜色那么简单。
色彩对比要柔和
在暗黑模式下,背景通常是深灰或纯黑,如果图标用纯白,反差太强反而伤眼。建议使用浅灰色系,比如 #FFFFFF 用于高亮文字,而图标可以采用 #CCCCCC 或 #BBBBBB,这样既清晰又不刺眼。苹果和谷歌的设计指南都推荐使用带有透明度的白色,比如 rgba(255, 255, 255, 0.87),来降低视觉冲击。
避免纯黑与纯白
很多设计师一开始会直接把图标从亮色模式复制过来,把底色换成黑,图标留白。但这样做容易产生“发光”效果,看起来像浮在界面上。正确的做法是使用深灰(如 #121212)作为背景,图标用中性浅灰,保持整体色调统一。Material Design 就明确建议主背景不用纯黑,减少视觉疲劳。
注意细节的可见性
有些图标在线条较细或结构复杂时,在深色背景下容易糊成一团。比如一个白色的齿轮图标,齿缝之间可能因为对比过高而看不清细节。这时候需要适当加粗描边,或者调整内部间距,确保在小尺寸下也能辨认。
状态色也要重新考量
警告、成功、错误这类状态图标在暗黑模式下不能照搬亮色模式的颜色。红色在黑色背景上显得更刺目,建议降低饱和度。例如,不用 #FF0000,改用 #CF6679 这类柔和的粉红调;绿色可以用 #00C853 调低亮度,避免荧光感。
提供双套资源或动态切换
实际开发中,最好为图标准备两套颜色方案,通过系统设置自动切换。iOS 中可以用 Asset Catalogs 设置“Appearances”,Android 可以在 drawable-night 目录放深色版本。也可以用 SVG + CSS 变量控制颜色,方便统一管理。
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" fill="var(--icon-color, #fff)"/>
</svg>
上面这段 SVG 代码中的 fill 使用了 CSS 变量,配合不同主题动态变色,适合多主题项目。
测试别只看电脑
设计完别急着交付,拿到真机上看效果。在昏暗环境下用手机预览,看看图标是否清晰、有没有眩光。有时候电脑屏幕上看着刚刚好,到了手机上却太亮或太闷。多找几个人试试,特别是对光线敏感的用户,他们的反馈往往最真实。
做好暗黑模式的图标,不是为了赶潮流,而是让用户在深夜翻看消息、查天气、设闹钟的时候,眼睛能舒服一点。这些小细节,恰恰是产品质感的体现。