11.3 Formularios accesibles: label, fieldset y legend
La accesibilidad en los formularios garantiza que personas con discapacidad visual, cognitiva o motriz puedan comprender, navegar e interactuar con los controles de entrada. Los elementos <label>, <fieldset> y <legend> proporcionan la semántica necesaria para que los distintos agentes de usuario –especialmente lectores de pantalla– identifiquen correctamente cada control y su función.
1. El elemento <label>
El <label> sirve para describir un control de formulario. Su uso adecuado asocia texto legible con el campo de entrada, facilitando el foco y la lectura por tecnologías asistivas.
Formas de asociación:
- Etiqueta explícita mediante
foreid. - Etiqueta implícita envolviendo el control.
1.1 Etiqueta explícita (recomendada)
Comentarios:
for='email'enlaza el texto “Correo electrónico:” con elinputcuyoid='email'.- Al hacer clic en el texto de la etiqueta, el campo recibe el foco automáticamente.
requiredyaria-required='true'informan de la obligatoriedad a los usuarios de lectores de pantalla.
1.2 Etiqueta implícita
Comentarios:
- El
<label>envuelve al<input>, por lo que la asociación es automática y no hace faltaforniid. - Útil para formularios simples, aunque para estilos CSS más complejos a veces se prefiere la asociación explícita.
1.3 Labels en controles específicos
- Radio buttons y checkboxes requieren
labelpara cada opción. - Usar agrupación con
fieldsetylegendpara grupos de opciones relacionadas (ver sección 2).
2. Agrupación de controles con <fieldset> y <legend>
Cuando un formulario contiene varios controles relacionados (por ejemplo, dirección, datos de contacto, métodos de pago), es recomendable agruparlos con <fieldset>. La primera etiqueta hija de un fieldset idealmente debe ser un <legend>, que actúa como título descriptivo del grupo.
2.1 Estructura básica
Ventajas:
- Semántica clara: el lector de pantalla anuncia el inicio de un nuevo grupo y su descripción.
- Mejora la organización visual y lógica del formulario.
- Posibilita estilos CSS consistentes (marco por defecto, aunque se puede restilar).
2.2 Agrupación avanzada y anidamiento
Se pueden anidar fieldset para subgrupos:
3. Buenas prácticas adicionales
- Cada
inputdebe tener asociada unalabelo, en casos especiales, un atributoaria-labeloaria-labelledby. - Para ocultar visualmente una etiqueta pero mantenerla accesible, se usa habitualmente una clase con CSS (por ejemplo
.sr-only), situando el texto fuera de la vista. - Marcar campos obligatorios con un asterisco y, de ser posible, añadir
aria-required='true'al control. - Al mostrar mensajes de error, usar
aria-describedbypara enlazar elinputcon el texto de ayuda o error. - Verificar siempre la navegación únicamente con teclado: Tab, Shift+Tab y navegación por grupos.
Implementando correctamente <label>, <fieldset> y <legend>, se mejora sustancialmente la usabilidad y accesibilidad, garantizando una experiencia inclusiva para todos los usuarios.
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.