从零造按钮?你得先造个宇宙
If you want to create a button from scratch, you must first create the universe

大家常听说ARIA的第一条规则是别用ARIA,有原生元素就别自己造。但很少有人解释为什么。我通过尝试从零手写一个button组件,揭示了这简直是个西西弗斯式的苦差事。从遵循Newtonian laws of UX,到处理WCAG 2.2的12项严苛要求,再到解决emoji在屏幕阅读器中的灾难性表现、实现tabindex焦点管理,以及兼容mouse、touch、pointer和键盘交互,每一个环节都暗藏玄机。当你试图用JavaScript和Shadow DOM复刻原生行为时,你会发现复杂度呈指数级上升。这篇文章用幽默的宇宙大爆炸比喻,带你体验从零构建可访问性组件的“创世”过程,让你彻底明白为什么原生元素是开发者的最佳盟友。
如果你想从零开始创建一个按钮,那你得先创造一个宇宙。
HN 评论区
132- 一位资深开发者指出,从零重写按钮需处理 focus、点击区域判定等无数边缘情况,最终只会徒增复杂度,强烈建议直接使用内置组件。
- 有评论者反驳 Flash 性能差的观点,认为其问题源于糟糕的 ad 代码而非语言本身,并指出当前充斥内存的 JS 广告与当年的 Flash 如出一辙。
- 针对 UI 范式,有观点认为人类对交互的偏好在于'可访问的新奇'与'熟悉模式'的平衡,而非单纯追求技术上的响应式或设备适配。
- 关于未来交互,有评论者质疑 VR、语音或手势等新技术是否真的带来进步,认为若因等待技术成熟而停滞,行业将永远无法解决核心问题。