Boas práticas para criar componentes acessíveis e navegáveis por teclado que funcionam para todos. Conformidade com WCAG 2.1 AA na prática.
Acessibilidade não é opcional — é essencial para criar aplicações web inclusivas.
Sempre use os elementos HTML corretos:
<!-- Bom -->
<button>Click me</button>
<!-- Ruim -->
<div onclick="handleClick()">Click me</div>
Quando o HTML não é suficiente, use ARIA:
<div
role="dialog"
aria-modal="true"
aria-labelledby="dialog-title"
aria-describedby="dialog-description"
>
<h2 id="dialog-title">Confirm Action</h2>
<p id="dialog-description">Are you sure?</p>
</div>
Garanta que todos os elementos interativos sejam acessíveis pelo teclado:
function CustomButton() {
return (
<div
tabindex="0"
role="button"
onKeyDown={(e) => {
if (e.key === "Enter" || e.key === " ") {
handleClick();
}
}}
onClick={handleClick}
>
Custom Button
</div>
);
}
Gerencie o foco para modais e conteúdo dinâmico:
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>
);
}
Use estas ferramentas:
Construir componentes acessíveis desde o início é mais fácil do que adaptar a acessibilidade depois. Faça disso um hábito!