一次失败的 UI 规范制定经历

凌晨三点的显示器前,我盯着完全”消失”的按钮组件苦笑。这是我们在制定新版UI规范后的第17个小时,团队终于发现整套设计系统存在致命缺陷——白色按钮在白色背景上完美隐身。这场由字体颜色引发的灾难,暴露了我们在UI规范制定过程中的系统性疏漏,也让我重新理解了设计系统建设的底层逻辑。

一、问题爆发现场还原

1.1 理想中的规范升级

我们计划将原有UI规范从基于屏幕尺寸的响应式体系,升级为原子设计+设计令牌的现代化架构。新规范包含:
40+基础组件
12种标准配色方案
8级文字层级体系
动态间距系统

1.2 诡异的问题呈现

开发团队在接入新规范两周后,陆续报告按钮组件存在“随机性消失”问题。具体表现为:

// 问题组件代码片段
function checkVisibility(element) {
  const textColor = getComputedStyle(element).color;
  const bgColor = getComputedStyle(element.parentNode).backgroundColor;
  return textColor !== bgColor ? true : false; 
}

1.3 破案过程复盘

关键排查节点:
1. 组件树结构验证(耗时4小时)
2. z-index层级检测(耗时2小时)
3. 透明度参数审查(耗时1.5小时)
4. 颜色对比度测试(破案关键)

最终发现:默认白色文字(FFFFFF)父容器默认背景(FFFFFF)完全融合,导致视觉”消失”。

二、规范失败的根本原因

2.1 系统性设计漏洞

问题层级 具体表现 影响范围
组件设计 未设置默认背景色 所有容器类组件
颜色系统 缺少强制对比度规则 全局文字显示
文档规范 默认值说明缺失 开发理解偏差

2.2 团队协作断层

设计师关注视觉层参数
开发聚焦功能实现
可访问性需求成为三不管地带

三、规范重建方法论

3.1 颜色系统重构

新的颜色对比度规则:
“`css
:root {
–text-primary: oklch(16.42% 0.088 258.18);
–surface-background: oklch(99.11% 0.003 258.18);
/ 强制保证7:1对比度 /
}
“`

3.2 组件隔离策略

1. 所有容器组件必须声明最小背景对比度
2. 文字组件自动继承对比色
3. 增加异常状态检测脚本

3.3 文档维护机制

  • 在线演示环境实时同步
  • 版本差异对比功能
  • 默认值变更通知系统

四、经验沉淀与启示

4.1 规范制定的三个必然

1. 设计决策必须有数据支撑
2. 组件开发必须包含自检逻辑
3. 文档维护必须实现自动化同步

4.2 团队协作的黄金法则

建立设计-开发验收清单
每周进行跨角色走查会议
设置质量门禁自动化检测

结语:失败是更好的开始

这次规范重构让我们团队建立起完整的设计系统监测体系,错误率降低73%,组件复用率提升至89%。现在每次看到规范文档里的颜色对比度检测模块,就会想起那个抓狂的凌晨——最好的规范不是写在文档里,而是刻在失败的经验中。

上一篇
下一篇