aria-label aria-labelledby y aria-describedby
Proporcione nombres y descripciones accesibles para los elementos
aria-label aria-labelledby y aria-describedby es una lección gratuita de HTML Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de HTML Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de HTML Academy incluye 4 lecciones en total.
Por qué son importantes los nombres accesibles
Todo elemento interactivo necesita un nombre accesible: una cadena de texto que la tecnología de asistencia utiliza para identificarlo. Sin un nombre accesible, los lectores de pantalla no pueden indicar a los usuarios qué hace un botón o un campo de entrada.
aria-label
aria-label proporciona directamente en un elemento un nombre accesible de texto:
<button aria-label="Close dialog">×</button>
<!-- The × character has no accessible meaning
aria-label provides the name: 'Close dialog, button' -->
<input type="search" aria-label="Search products">
<!-- No visible label — aria-label provides the accessible name -->aria-labelledby
aria-labelledby utiliza otro elemento como nombre accesible:
<h2 id="section-title">Billing Information</h2>
<form aria-labelledby="section-title">
<!-- Form's accessible name is 'Billing Information' -->
</form>
<!-- Multiple id references: -->
<button aria-labelledby="action-verb object-name">
Delete
</button>
<span id="object-name" hidden>User Account</span>
<!-- Screen reader: 'Delete User Account, button' -->aria-describedby
aria-describedby proporciona una descripción ampliada (complementaria al nombre):
<label for="pwd">Password</label>
<input
type="password"
id="pwd"
aria-describedby="pwd-hint"
>
<p id="pwd-hint">Must be 8+ characters with one uppercase letter and one number.</p>
<!-- Screen reader: 'Password [input]' then reads the description on focus -->Etiqueta frente a descripción
La diferencia entre el nombre accesible y la descripción:
- Nombre accesible: identifica el elemento (aria-label, aria-labelledby o el elemento label)
- Descripción: complementa el nombre con contexto adicional (aria-describedby)
- Los lectores de pantalla anuncian: nombre, rol, estado y, después, descripción
aria-label en referencias
Use aria-label para distinguir varias referencias del mismo tipo:
<nav aria-label="Primary">...</nav>
<nav aria-label="Breadcrumb">...</nav>
<!-- Screen reader landmark list:
'Primary, navigation'
'Breadcrumb, navigation' -->
<!-- When only one nav, aria-label is optional but still helpful -->aria-labelledby en secciones
Asocie las secciones con sus encabezados para proporcionar contexto a los lectores de pantalla:
<section aria-labelledby="about-heading">
<h2 id="about-heading">About Our Team</h2>
<p>We are a team of passionate developers...</p>
</section>
<!-- Screen reader: 'About Our Team, region' when entering section -->aria-label frente a texto visible
aria-label reemplaza el texto visible; úselo con cuidado:
<button aria-label="Delete account permanently">
Delete
</button>
<!-- Screen reader hears: 'Delete account permanently'
Sighted user reads: 'Delete' -->
<!-- Best practice: visible text and aria-label should agree
If possible, include extra context in visible text too:
<button>Delete account permanently</button> -->
<!-- aria-label should start with the visible text when possible
for speech recognition users who use voice commands -->aria-describedby para errores
Asocie los mensajes de error con sus campos de entrada:
<label for="email">Email</label>
<input
type="email"
id="email"
aria-describedby="email-error"
aria-invalid="true"
>
<span id="email-error" role="alert">
Please enter a valid email address.
</span>
<!-- When input receives focus, screen reader reads:
'Email [field], invalid. Please enter a valid email address.' -->Varias referencias de aria-describedby
aria-describedby puede hacer referencia a varios elementos:
<input
type="password"
aria-label="New password"
aria-describedby="pwd-hint pwd-strength"
>
<p id="pwd-hint">Must be 8+ characters.</p>
<meter id="pwd-strength" aria-label="Password strength" value="2" max="4">Medium</meter>
<!-- Both elements are announced as the description -->Etiquetas visibles frente a ocultas
Cuando no sea posible mostrar una etiqueta visible, use la clase sr-only:
<label for="search" class="sr-only">Search</label>
<input type="search" id="search" placeholder="Search...">
/* Visually hidden but in accessibility tree: */
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0,0,0,0);
white-space: nowrap;
border: 0;
}Comprobación rápida
¿Cuál es la diferencia entre aria-label y aria-labelledby?
Repaso: etiquetas de ARIA
Aspectos esenciales de los nombres accesibles:
aria-label: nombre de texto integrado para elementos sin etiquetas visiblesaria-labelledby: hace referencia mediante id a un texto visible existentearia-describedby: descripción complementaria (se lee después del nombre)- Prefiera las etiquetas visibles y los elementos label de HTML nativo
- aria-label en las referencias distingue varias regiones del mismo tipo
Preguntas frecuentes
¿La lección «aria-label aria-labelledby y aria-describedby» es gratis?
Sí — el texto completo de «aria-label aria-labelledby y aria-describedby» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de HTML Academy, actualiza a CoddyKit PRO. El curso de HTML Academy incluye 4 lecciones en total.
¿Qué aprenderé en «aria-label aria-labelledby y aria-describedby»?
Proporcione nombres y descripciones accesibles para los elementos Practicas HTML Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar HTML Academy?
No se requiere experiencia previa. HTML Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «aria-label aria-labelledby y aria-describedby»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de HTML Academy?
Sí. Cada lección de HTML Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Cuándo usar ARIA frente a HTML nativo
- role button alert dialog y landmark
- aria-label aria-labelledby y aria-describedby
- aria-hidden y aria-live