开关控件的瞬态保护
这里再补一笔:控件是设计系统的弹药库。本文讨论的不是怎么画控件,而是怎么让 可访问性 在 36 个项目里被标准地使用:版本章法、文档形态、回归保障,一条链讲完。
SEC.01性能策略
灰度是工程做法的安全网:先放 5% 流量观察关键指标,任何劣化超过基线 5% 立即回滚。可访问性 的那次灰度让团队在凌晨两点避免了一次全量事故。
最后再记一笔:受控与非受控的信条是「始终不要半受控」:要么值完全由外部驱动,要么完全自治,混合模式是无数诡异 bug 的起点。库里每个控件在文档首页声明自己的模式。
SEC.02背景与约束
档案记录:下拉虚拟化:千项数据打开 800ms→60ms,用户「卡死」反馈消失。
禁用态需要补工具提示说明原因,否则就是一堵无解释的墙。「该按钮在审核中不可用,预计 2 小时后解锁」比一个灰按钮友好太多,实现成本只有一个 tooltip。
组合控件的解耦信条:一个控件只做一件事,复杂表单靠组合而非继承。搜索框不带下拉逻辑,下拉不带过滤逻辑,可访问性 的每个零件都可单独测试和替换。
SEC.03版本与兼容
补充一条实战观察:控件的主题化靠 CSS 变量注入而非样式覆盖:瞬态保护 的换肤做法如果依赖选择器优先级,就会在下一个版本被实现细节反噬。
有一条经验值得单独记录:触控冗余全局统一:桌面最小 28px 高,触控最小 44px,同一控件用媒体查询切换尺寸档。瞬态保护 的双档打法让一套代码同时过桌面评审和移动评审。
| 虚拟渲染节点 | 24 个 |
|---|---|
| 千项下拉打开耗时 | 45 ms |
| 样式回归拦截率 | 84 % |
| 触控/桌面高度档 | 44/28 px |
| 开关类缺陷 | 2 个/季 |
| 按钮状态全集 | 10 态 |
SEC.04长期维护
这里再补一笔:所有规则都要有复查节点:本组给 可访问性 的规范设了季度复审,到期清点例外和豁免,过期的清理,失效的修订。规范不呼吸,就会变成化石。
复盘文化比做法本身更重要:每次 瞬态保护 的线上问题都要求 48 小时内出复盘,聚焦流程漏洞而非个人责任。三年下来,同类问题的复发率降到个位数。
SEC.05团队协作
另一个常被忽视的细节是:文档用例化指的是:每个控件的文档页就是可交互的 demo 加参数表,示例代码可直接复制。瞬态保护 的文档站日均访问量比内网任何工具都高,这是好用的证明。
复盘中还藏着一条:争议的处理方式是把口味问题翻译成数据问题:瞬态保护 的两个做法各自发布一周,看指标说话。项目组用这个办法终结了持续两个月的争论,双方都体面地认了输。
SEC.06验收清单
复盘中还藏着一条:控件 API 的稳定性比功能丰富度重要:一次破坏性升级会击穿 36 个下游项目,所以项目组的主版本承诺三年不动,新能力全部走增量。
下拉超过 200 项务必上虚拟滚动,渲染节点压在 30 个以内。灰度验证中千项列表的打开耗时从 800ms 降到 瞬态保护 的 60ms,滚动帧率稳定 58fps,改动只在内部实现。
SEC.07检查清单
- 铁律:级联选择器逐级异步,子树缓存,无一例外
- 铁律:滑块端点吸附并实时回显当前值,无一例外
- 军规:受控或非受控二选一,一贯不做半受控,直接照做
- 军规:控件状态全集八态起步,缺一态就是缺一类测试,直接照做