用途:为需要键盘操作的可聚焦界面(模态框、弹出层、抽屉、标签页、菜单、列表框、组合框、工具栏、网格、树等)提供焦点、键盘导航与 inert 的权威参考。
主要能力:围绕四个原语展开——用 :focus-visible 提供焦点指示(替代 :focus,禁止裸用 outline:none);用 :focus-within 处理父级状态样式;用 inert 声明式禁用整棵子树;tabindex 仅允许 0 和 -1。资料给出 inert 的六个同时生效的效果:不触发 click、不能获得焦点、被排除于页面查找、不能被选中、不能编辑、从无障碍树中隐藏。
使用方式:提供决策树帮助在 disabled、inert、aria-hidden、pointer-events:none 之间选择;给出焦点指示选择器、tabindex 合法值、带焦点恢复的模态对话框、roving tabindex 标签页、非模态浮层背景隔离、:focus-within 父级样式等模式。模态示例要点:打开前记录 document.activeElement,调用 dialog.showModal(),在 close 事件中手动恢复焦点。
适用场景:组件库、设计系统、含复杂交互控件的 Web 应用。
限制与硬性规则:禁止无替代地写 :focus { outline: none };禁止正数 tabindex;禁止在含可聚焦元素的子树上用 aria-hidden="true";禁止用 pointer-events:none 代替 inert;禁止拦截 Escape;roving tabindex 更新后必须调用 element.focus()。ARIA 角色状态、WCAG 2.2 叙事、Popover API 细节与触摸目标尺寸不在本文范围内。参考资料引用 MDN 与 W3C WAI APG,标注验证日期 2026-05-19。