ARIA标签与键盘导航是实现网页无障碍的关键。通过aria-label、aria-labelledby、aria-describedby等属性补充语义,结合role定义组件角色,确保屏幕阅读器准确理解界面;使用aria-expanded和aria-controls管理动态内容状态。所有交互元素应支持tabindex="0"进入焦点顺序,响应Enter、Space、Esc及方向键操作。模态框需实现焦点陷阱并恢复原焦点,动态内容通过aria-live通知变化。JavaScript更新UI时同步修改ARIA属性,如aria-checked、aria-busy、aria-invalid,保持状态一致。合理应用这些技术可提升残障用户的访问体验。
在现代网页开发中,JavaScript 驱动的交互功能越来越丰富,但如果不注意可访问性(Accessibility),很容易让残障用户或使用辅助技术的用户难以操作。ARIA(Accessible Rich Internet Applications)标签与合理的键盘导航设计,是实现无障碍访问的关键手段。
ARIA 是一组 HTML 属性,用于补充语义信息,帮助屏幕阅读器理解动态内容和用户界面组件。它不能替代结构化的 HTML,但在 JavaScript 创建的复杂组件中至关重要。
常用 ARIA 属性包括:
例如,一个通过 JavaScript 控制显示/隐藏的菜单:
点击按钮时,JavaScript 应同步更新 aria-expanded 的值,并切换菜单的可见状态。
许多用户依赖键盘操作页面,比如使用 Tab、Enter、Esc、方向键等。JavaScript 组件必须支持完整的键盘交互路径。
关键实践包括:
示例:一个简单的模态框打开逻辑:
const modal = document.getElementById('modal');
const closeBtn = document.getElementById('close');
const prevFocus = document.activeElement;
modal.style.display = 'block';
modal.setAttribute('aria-hidden', 'false');
const firstFocusable = modal.querySelector('button, [href], input');
firstFocusable.focus();
// 关闭时
closeBtn.addEventListener('click', () => {
modal.style.display = 'none';
modal.setAttribute('aria-hidden', 'true');
prevFocus.focus(); // 返回原焦点
});
当界面状态变化时,JavaScript 必须同步更新对应的 ARIA 属性。例如:
保持 DOM 状态与 ARIA 描述一致,是保障辅助技术用户获得准确信息的前提。
基本上就这些。合理使用 ARIA 标签,配合完善的键盘支持,能让 JavaScript 应用对所有人更友好。不复杂但容易忽略。