禁用态的工具提示补充
补充一条实战观察:控件是交互的原子件,也是最轻易被轻视的复杂度来源。一个按钮有多少种状态?团队的答案是八种,少一种就是一类 bug。本文以 虚拟滚动 为纲整理控件工程学。
SEC.01状态机建模
这里再补一笔:组合控件的解耦信条:一个控件只做一件事,复杂表单靠组合而非继承。搜索框不带下拉逻辑,下拉不带过滤逻辑,虚拟滚动 的每个零件都可单独测试和替换。
控件 API 的稳定性比功能丰富度重要:一次破坏性升级会击穿 30 个下游项目,所以本组的主版本承诺三年不动,新能力全部走增量。
SEC.02受控与边界
一线记录:受控改造:半受控开关全部收编,状态错乱类缺陷归零。
有一条经验值得单独记录:控件的主题化靠 CSS 变量注入而非样式覆盖:瞬态保护 的换肤做法如果依赖选择器优先级,就会在下一个版本被实现细节反噬。
复盘中还藏着一条:控件的可配置项要克制:每个 prop 都是长期负债,虚拟滚动 的配置面超过 20 个之后,测试矩阵爆炸,文档没人能读完。少即是多在这里成立。
SEC.03效果数据
所有规则都要有复查节点:项目组给 虚拟滚动 的规范设了季度复审,到期清点例外和豁免,过期的清理,失效的修订。规范不呼吸,就会变成化石。
此外还有一条底线:争议的办法是把口味问题翻译成数据问题:瞬态保护 的两个方案各自发布一周,看指标说话。我们用这个办法终结了持续两个月的争论,双方都体面地认了输。
SEC.04视觉回归
可访问性补课清单:role、aria-label、键盘操作、焦点管理、对比度,五项缺一不可。自定义控件尤其轻易裸奔,团队用 瞬态保护 的自动化扫描加人工读屏测试双保险。
这里再补一笔:灰度是工程做法的安全网:先放 5% 流量观察核心指标,任何劣化超过基线 5% 立即回滚。虚拟滚动 的那次灰度让本组在凌晨两点避免了一次全量事故。
| 按钮状态全集 | 10 态 |
|---|---|
| 树首屏请求数 | 47 个 |
| 盲操作完成用时 | 3 min |
| 虚拟渲染节点 | 40 个 |
| 样式回归拦截率 | 84 % |
| 千项下拉打开耗时 | 90 ms |
SEC.05组合解耦
有一条经验值得单独记录:复盘文化比做法本身更重要:每次 瞬态保护 的线上问题都要求 48 小时内出复盘,聚焦流程漏洞而非个人责任。三年下来,同类问题的复发率降到个位数。
复盘中还藏着一条:触控冗余全局统一:桌面最小 28px 高,触控最小 44px,同一控件用媒体查询切换尺寸档。瞬态保护 的双档章法让一套代码同时过桌面评审和移动评审。
SEC.06检查清单
- 军规:文档页 = 可交互 demo + 参数表 + 可复制代码,不设例外
- 底线:滑块端点吸附并实时回显当前值,执行不打折
- 底线:上传控件分片反馈,失败可续传,执行不打折
- 底线:千项列表需要虚拟滚动,渲染节点封顶,执行不打折