创建无障碍、可通过键盘导航的组件的最佳实践,使其适用于每一个人。让 WCAG 2.1 AA 合规变得切实可行。
无障碍性不是 可选项 —— 它对于创建包容性的 Web 应用程序至关重要。
始终使用正确的 HTML 元素:
<!-- 推荐 -->
<button>点击我</button>
<!-- 不推荐 -->
<div onclick="handleClick()">点击我</div>
当 HTML 不够用时,使用 ARIA:
<div
role="dialog"
aria-modal="true"
aria-labelledby="dialog-title"
aria-describedby="dialog-description"
>
<h2 id="dialog-title">确认操作</h2>
<p id="dialog-description">您确定吗?</p>
</div>
确保所有交互元素都可以通过键盘访问:
function CustomButton() {
return (
<div
tabindex="0"
role="button"
onKeyDown={(e) => {
if (e.key === "Enter" || e.key === " ") {
handleClick();
}
}}
onClick={handleClick}
>
自定义按钮
</div>
);
}
为模态框和动态内容管理焦点:
import { useEffect, useRef } from "react";
function Modal({ isOpen, onClose }) {
const modalRef = useRef(null);
useEffect(() => {
if (isOpen && modalRef.current) {
modalRef.current.focus();
}
}, [isOpen]);
return (
<div ref={modalRef} tabindex="-1">
{/* Modal content */}
</div>
);
}
使用这些工具:
从一开始就构建无障碍组件,比事后补救无障碍性更容易。养成这个习惯吧!