第三章 视觉设计基础:色彩体系、字体排版与图标规范

好,咱们进入视觉设计这块硬骨头。说实话,很多车载HMI项目翻车,不是功能逻辑没想清楚,而是视觉上出了问题——白天看不清、晚上刺眼、字体太小、图标认不出来。我见过太多这样的案例了。

这一章,我把自己这些年踩过的坑、总结的经验,全给你抖出来。咱们从三个最核心的维度入手:色彩体系、字体排版、图标设计。

3.1 色彩体系:日间与夜间模式的博弈

车载屏幕的色彩,跟手机完全不是一回事。手机你可以在阳光下调高亮度,但车载屏幕要考虑的是:安全第一,视觉舒适第二

3.1.1 日间模式:高对比度,强可读性

日间模式下,阳光直射是最大的敌人。我做过一个项目,测试时发现仪表盘上的白色文字在正午阳光下根本看不清。后来怎么解决的?

  • 背景色:建议使用浅灰(#F5F5F5)或米白(#FAFAFA),不要用纯白(#FFFFFF)。纯白在强光下会反光,反而刺眼。
  • 文字色:深灰(#333333)或纯黑(#000000)。但注意,纯黑在浅色背景上会有「晕染」感,我习惯用#1A1A1A。
  • 强调色:蓝色(#007AFF)或绿色(#34C759)。红色慎用,容易跟报警信息混淆。

核心原则:日间模式下,文字与背景的对比度至少达到7:1(WCAG AA标准)。我一般用WebAIM的对比度检查工具验证。

3.1.2 夜间模式:低亮度,防眩光

夜间模式,说白了就是「别晃我眼睛」。我记得有一次夜间路测,导航界面突然切换到日间模式,整个驾驶舱瞬间被照亮,驾驶员差点失控。嗯,从那以后我对夜间模式的切换逻辑格外敏感。

  • 背景色:深灰(#1C1C1E)或纯黑(#000000)。OLED屏幕建议用纯黑,能省电。
  • 文字色:浅灰(#D1D1D6)或米白(#F2F2F7)。不要用纯白,纯白在暗背景下会「发光」,造成视觉疲劳。
  • 强调色:降低饱和度。比如日间用的蓝色#007AFF,夜间可以降到#0A84FF,亮度调低30%。

注意:夜间模式不是简单地把颜色取反。我曾经见过一个团队直接把日间模式「反色」处理,结果红色变成青色,驾驶员根本认不出那是报警灯。色彩转换需要单独设计。

3.1.3 色彩过渡:平滑切换

日间/夜间切换,不能「啪」一下变。我建议用300-500ms的淡入淡出动画。具体实现上,可以用CSS的transition或者原生动画框架。

/* 色彩过渡示例 */
:root {
  --bg-color: #F5F5F5;
  --text-color: #1A1A1A;
  transition: background-color 0.4s ease, color 0.4s ease;
}

[data-theme="night"] {
  --bg-color: #1C1C1E;
  --text-color: #D1D1D6;
}

3.2 字体排版:可读性就是生命线

车载屏幕上的文字,不是给你看的,是给驾驶员在0.5秒内扫一眼就能理解的。所以字体排版的核心就两个字:清晰

3.2.1 字体选择:无衬线是唯一解

别跟我提衬线字体(Serif),在车载屏幕上就是灾难。我推荐几个经过验证的字体:

  • 系统字体:PingFang SC(中文)、SF Pro(英文)。兼容性好,渲染稳定。
  • 开源字体:Noto Sans CJK、思源黑体。跨平台一致性好。
  • 商业字体:方正兰亭黑、汉仪旗黑。适合高端车型。

我的习惯:中文字体用字重Regular(400)或Medium(500),英文字体用Regular(400)。太细的字体(Light)在阳光下看不清,太粗的(Bold)会显得拥挤。

3.2.2 字号与行距:黄金比例

车载屏幕的观看距离大约是60-80cm。我总结了一套字号规范:

用途 字号(px) 行距(px) 备注
主标题 36-48 48-64 导航目的地、车速数字
副标题 24-32 36-48 菜单标题、功能名称
正文 18-22 28-34 提示信息、列表内容
辅助文字 14-16 22-26 时间、温度、单位

你想想看,如果车速数字用24px,驾驶员在高速上根本来不及看。我一般把车速做到48px以上,而且用加粗字重。

3.2.3 文字对比度:别让驾驶员眯眼

文字与背景的对比度,我建议至少达到4.5:1(WCAG AA标准)。对于关键信息(如车速、报警),建议达到7:1。

避坑指南:我曾经在项目中用了灰色文字(#999999)配浅灰背景(#F5F5F5),结果对比度只有2.3:1。测试时驾驶员说「那行字是不是不存在?」。后来我养成了习惯:每次设计完,用取色工具验证对比度。

3.3 图标设计规范:一眼就懂

图标在车载HMI里,比文字更直观。但设计不好,就是灾难。我见过一个导航图标,画了个箭头加个房子,驾驶员愣是没看懂那是「回家」功能。

3.3.1 图标风格:统一、简洁、可识别

  • 线形图标:适合功能类(设置、音乐、电话)。线条宽度建议2-3px,圆角端点。
  • 面形图标:适合状态类(电量、信号、报警)。填充色用强调色。
  • 混合图标:线面结合,适合复杂功能(如导航、空调)。

我个人习惯,一套图标系统里不要超过两种风格。否则看起来像拼凑的。

3.3.2 图标尺寸与间距

车载屏幕的触控区域,最小建议44x44px(物理尺寸约7mm)。图标本身建议24-32px,留出足够的触控间距。

图标类型 图标尺寸(px) 触控区域(px) 间距(px)
主功能图标 32 48 16
辅助图标 24 44 12
状态图标 20 40 8

3.3.3 图标语义:别让用户猜

图标设计最忌讳「自创」。我建议遵循以下原则:

  • 通用符号:用用户已经熟悉的符号。比如「设置」用齿轮,「音乐」用音符。
  • 避免歧义:一个图标只表达一个意思。比如「返回」和「关闭」不要用同一个箭头。
  • 文字辅助:关键图标下方加文字标签。尤其是第一次使用时,用户需要学习成本。

注意:不要用抽象图标。我见过一个项目,用「云朵」表示「在线服务」,用「闪电」表示「快充」。结果用户把云朵当成天气,把闪电当成危险警告。图标设计,安全第一,创意第二。

3.4 实战:色彩与字体在代码中的落地

理论说完了,咱们看看代码里怎么落地。我习惯用CSS自定义属性(变量)来管理主题。

/* 日间模式主题变量 */
:root {
  --color-bg-primary: #F5F5F5;
  --color-bg-secondary: #FFFFFF;
  --color-text-primary: #1A1A1A;
  --color-text-secondary: #666666;
  --color-accent: #007AFF;
  --color-warning: #FF9500;
  --color-danger: #FF3B30;
  
  --font-family: 'PingFang SC', 'SF Pro', sans-serif;
  --font-size-title: 48px;
  --font-size-body: 20px;
  --font-size-caption: 14px;
  --line-height-title: 64px;
  --line-height-body: 30px;
}

/* 夜间模式主题变量 */
[data-theme="night"] {
  --color-bg-primary: #1C1C1E;
  --color-bg-secondary: #2C2C2E;
  --color-text-primary: #F2F2F7;
  --color-text-secondary: #8E8E93;
  --color-accent: #0A84FF;
  --color-warning: #FF9F0A;
  --color-danger: #FF453A;
}

这样设计的好处是:切换主题时,只需要改变data-theme属性,所有颜色自动更新。我在多个项目中验证过,维护成本极低。

小技巧:图标颜色也建议用变量控制。比如fill: var(--color-accent);,这样日间/夜间切换时,图标颜色自动适配,不用单独设计两套图标。

3.5 总结:视觉设计的三个底线

嗯,这一章内容不少。我最后给你总结三个底线,你设计时反复对照:

  1. 色彩:日间看得清,夜间不刺眼。对比度至少4.5:1。
  2. 字体:0.5秒内能读完。字号不小于14px,行距不小于1.4倍。
  3. 图标:一眼就懂,不用猜。通用符号优先,关键图标加文字。

这三个底线守住了,你的车载HMI视觉设计至少不会出大问题。下一章,咱们聊聊交互设计中的「手势与反馈」——那又是另一片坑了。