加入收藏 | 设为首页 | 会员中心 | 我要投稿 站长网 (https://www.0577zz.cn/)- 应用程序、AI行业应用、CDN、低代码、区块链!
当前位置: 首页 > 综合聚焦 > 编程要点 > 资讯 > 正文

无障碍设计:从第一行代码起的尊重

发布时间:2026-10-31 14:10:27 所属栏目:资讯 来源:DaWei
导读:  跟产品吵。又吵。这次吵完我回工位看见咖啡杯上印的公司 logo 裂了道细纹,不是贴纸翘边,是釉面本身炸开的,像一道没闭合的 aria-live 区域。  PM 下午三点零七分甩过来个 Figma 链接,说“按钮动效要呼吸感”。我盯

  跟产品吵。又吵。这次吵完我回工位看见咖啡杯上印的公司 logo 裂了道细纹,不是贴纸翘边,是釉面本身炸开的,像一道没闭合的 aria-live 区域。


  PM 下午三点零七分甩过来个 Figma 链接,说“按钮动效要呼吸感”。我盯着那个带 300ms cubic-bezier(0.25, 0.46, 0.45, 0.94) 的 hover 缩放——它在屏幕阅读器里触发两次 focusin,一次在 mouseenter,一次在 transitionend,但 keyboard 用户压根进不去那个 state。我说:“这按钮键盘无法激活。”她回:“设计师说视觉上必须跳一下。”我原以为能扯到语义化表单控件,结果她截了张 iOS 设置页截图发群里:“你看苹果都这么跳。”


  我敢打包票:那个跳动的按钮,在 VoiceOver 下会播报成“跳动按钮,未选中”,而它根本不是 checkbox,也不是 switch,就是个 。但测试昨天没测这块——她说“UI 动效不归无障碍测试范围”。我说那归谁?她说“归设计师视觉验收”。我问设计师在哪?她说在陪客户看 demo。监控大屏上右下角那个标着“无障碍覆盖率”的曲线,上周五起就平在 41.7%,抖都没抖过一下。


文章配图,仅供参考

  灰度开关没推完。前端把 a11y 初始化逻辑包进一个叫 useAccessibleFocus() 的 hook 里,按路由异步加载。但首页路由的懒加载 chunk 比这个 hook 的 chunk 先落地三百七十二次调用——结果首屏所有按钮的 tabindex 全是 -1。QA 发现时已灰度 12%。不是崩溃,是静默失效:键盘用户 tab 到第三项就卡死,焦点凭空消失。运维在钉钉群里@我:“哥,你看看是不是 CDN 缓存没刷?” 我说不是缓存,是代码没等 hook 就执行了。他回了个OK手势表情,顺手把 oncall 手机震了一下。


  优胜劣汰。这个词我自己写的,现在看有点烫嘴。不是指残障用户被系统筛掉,是指团队里最先扛不住的那个人——一定是那个每天凌晨改 alt 文本、修 focus trap、给 SVG 补 aria-labelledby 的前端。我们组去年走两个,都是他带的。一个去了银行做适配国密算法的网银,一个转行考编,说是“不想再听 PM 说‘先上线,无障碍后面补’”。我问后面补过没?他说补过三次,每次补完都因样式重构全崩。我没说话。咖啡凉了,我也没喝。


  DBA 上周刚吵完。他坚称“索引不该为 screen reader 加字段”,我说“你加个 is_active 字段顶多涨十八毫秒查询,但加个 accessibility_status 枚举,能直接过滤掉四百一十七条失效的 aria-hidden=true 的旧记录”。他冷笑:“那你去改 ER 图,我批。”结果他批了,因为法务邮件抄送了所有人,标题写着《关于 WCAG 2.2 合规性风险与诉讼前置通知》。附件里有一张截图:某竞品首页的无障碍树结构,节点命名规范得像财务报表。底下小字标注:“该站于 2025 年 Q4 完成 ISO 30071-1 认证。”


  这事其实跟我无关。我是架构师,管的是服务拆分、流量调度、一致性协议。但那天 standup 上 PM 忽然转向我:“王工,你说接口要不要返个 accessibility_hint 字段?”我差点笑出声。我说“不用”,然后补了句“但你要敢让后端写死 ‘按钮文本应描述动作’ 这种注释,我马上把 service-a 的熔断阈值调到 1”,PM 点头点得比上次复盘会还快。旁边测试正在往本子上画 focus outline 的路径图,笔尖戳破纸背,漏墨了。


  无所谓。真无所谓。KPI 里无障碍指标占权重 3.5%,但今年上半年所有事故复盘报告里,“无障碍缺陷”只出现过两次,且都和资损无关。一次是搜索框 autocomplete 列表未用 listbox 角色,另一次是 PDF 下载链接缺 download 属性——后者还是法务部自己发现的,因为他们打印合同总卡在第一页的 screen reader 报错上。我原以为他们会觉得麻烦,结果法务老李倒了杯水过来,放我桌上,水渍在键盘托盘上晕开一小片。他说:“我们不怕改,怕改完下周又来个新设计稿。”


  所以“从第一行代码起的尊重”,其实就是——别让第一个写 JSX 的人,在 commit message 里写“fix a11y TODO”。别让 CI pipeline 里那个跑 axe-core 的 job 被手动跳过十七次。别把 aria-label 当注释使。至于“优胜劣汰”……我现在不确定这是优点。可能只是系统对耐心最诚实的测量方式。刚才我打开本地 devtools,把 color-scheme 强制切到 dark,页面左侧导航栏文字全糊成一片灰。我不知道是 CSS 变量没适配,还是 contrast ratio 算错了。我没修。我点了刷新,换了个标签页,去看下季度的技术债排期表。

(编辑:站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!