J2.10.1non-text contrast设计研究

图标、边框与状态指示同样需要达到对比度阈值

别名: 非文本对比度 · UI component contrast · graphical object contrast

概念解释

能读清一行字,不等于能认出旁边那只图标、那条输入框边、那个开关滑块。控件与图形里用来辨认「这是什么、现在是哪一态」的那部分像素,相对紧邻颜色也要过对比度门槛。这件事叫非文本对比度(non-text contrast)。它管的是形状与边界,不是字号。

常见误判是:正文已经够黑,界面就算过了。浅灰对钩画在白卡片上、进度环用 8% 透明度叠在图上,字过了,图形仍可能溶进背景。

机制

认字靠的是笔画分辨率:细小字母需要更高反差,才不会糊成一团。认控件靠的是边缘检测:方框、圆点、对钩、滑块凹槽都是较大、较简单的形状,所以通行判据通常是 3:1,而不是正文字常用的更高比值。比较对象是紧邻色,不是页面主背景——图标贴在浅灰卡片上,就要跟卡片比,跟窗外那块白底比没有意义。

状态指示也是图形。开关的轨道与滑块如果只差一个相近的蓝,低视力用户分不清开还是关。信息如果同时写在标签里,图形对比失败不一定让功能消失;若图形是唯一线索,失败就是功能不可感知。

怎么研究

用对比度测量工具取样控件边界与紧邻像素,而不是取样标题文字。WCAG 2.x 把用户界面组件与理解内容所必需的图形对象放在同一条 3:1 判据下;研究对照可以用 APCA 看感知亮度差,但符合性声明仍多按比值。

自变量:图形相对紧邻色的对比、描边宽度、图形是否为唯一状态线索。 因变量:能否正确指出控件存在、当前态、图标含义;漏检率。

评估时把页面放到低视力模拟(模糊、对比压缩)下走一遍主路径,专门记录「字还在、控件没了」的位置。自动化规则能抓纯色对纯色,抓不住细描边抗锯齿后的实际边缘。

边界

装饰性分割线、不承担辨认功能的纹理,不在这条判据里。禁用态常常被允许更低对比,因为它本意就是「看起来不可用」——前提是禁用不是唯一的不可用说明。照片、插画、数据可视化里用于编码数值的色块,若另有坐标轴与数值标签,图形本身可以低于 3:1;若色块就是唯一编码,就不能豁免。极细的 1 物理像素线在高分屏上会被插值,实验室里量到的比值不能直接当成用户视网膜上的比值。

怎么落地

  • 给图标、开关、单选圆、进度指示、必填星号等「靠形状说话」的元素规定与紧邻色至少 3:1;不要只给正文设阈值。
  • 把控件放在有色卡片、照片、渐变上时,以控件边缘实际碰到的颜色为邻色,而不是以画板底色为邻色。
  • 状态若只用填充色区分,补上位置、对钩或文字;图形对比失败时,文字通道还能兜住。
  • 验证:关掉「看字」的心态,用取色器点图标轮廓和紧贴它的背景,算出比值。每一个「字清楚、图形消失」的点记为失败。

延伸

  • 同组J2.10.2 未选中的复选框与输入框边框是最常被忽视的低对比元素 · J2.10.3 悬停或聚焦态改变的视觉信息需保持同等对比度 · J2.10.4 对比度达标不能仅在设计稿检查,需在实际渲染色值上验证
  • 相邻J2.01 文本对比度 · J2.03 信息不依赖颜色 · J2.06 焦点可见性
  • 站内检索non-text contrast · UI component contrast · 3:1 graphical object

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/J2.10.1