0Pricing
HTML Academy · Lección

Cuándo usar ARIA frente a HTML nativo

Siga la primera regla de ARIA: prefiera la semántica nativa

Cuándo usar ARIA frente a HTML nativo es una lección gratuita de HTML Academy en CoddyKit. Esta es la lección 1 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.

¿Qué es ARIA?

ARIA (Accessible Rich Internet Applications) es un conjunto de atributos que se pueden añadir a HTML para mejorar la accesibilidad para las tecnologías de asistencia. Cubre las carencias de HTML nativo cuando su semántica no es suficiente.

La primera regla de ARIA

La directriz más importante de ARIA es la siguiente: no use ARIA si HTML nativo puede hacerlo:

<!-- BAD: ARIA on a div -->
<div role="button" tabindex="0" onclick="submit()">Submit</div>

<!-- GOOD: use a real button -->
<button type="submit">Submit</button>

<!-- Native HTML elements:
  - Are keyboard accessible by default
  - Have correct semantics built in
  - Work in more contexts
  - Require less code
-->

Cuando HTML nativo no es suficiente

ARIA es necesaria cuando:

  • Los componentes de UI personalizados no tienen un equivalente en HTML (pestañas, combobox)
  • Es necesario sobrescribir el rol de un elemento nativo
  • Es necesario anunciar las actualizaciones de contenido dinámico
  • Es necesario hacer explícitas las relaciones complejas entre elementos

ARIA no añade comportamiento

Una confusión importante: ARIA añade metadatos de accesibilidad, pero no añade funcionalidad:

<!-- Adding role="button" to a div does NOT:
  - Make it keyboard-focusable (add tabindex="0")
  - Make Enter/Space activate it (add event listeners)
  - Make it styled like a button (add CSS)
-->

<!-- You must implement ALL behavior yourself -->
<!-- Native <button> handles all this for free -->

La taxonomía de ARIA

ARIA tiene tres categorías de atributos:

  • Roles: definen qué es un elemento: role="button", role="dialog"
  • Propiedades: describen características estáticas: aria-label, aria-required
  • Estados: describen condiciones dinámicas: aria-expanded, aria-checked

HTML semántico frente a equivalentes de ARIA

La mayoría de los elementos HTML ya tienen roles ARIA implícitos:

<nav>   ≡  role="navigation"
<main>  ≡  role="main"
<aside> ≡  role="complementary"
<header> ≡ role="banner" (page-level)
<footer> ≡ role="contentinfo" (page-level)
<button> ≡ role="button"
<a href> ≡ role="link"
<h1-h6> ≡ role="heading"
<ul>    ≡  role="list"

Usos válidos habituales de ARIA

Ejemplos de usos legítimos de ARIA:

<!-- 1. Custom dropdown (no native equivalent): -->
<div role="combobox" aria-expanded="false">...</div>

<!-- 2. Loading state announcement: -->
<div role="status" aria-live="polite">Loading results...</div>

<!-- 3. Override landmark label: -->
<nav aria-label="Primary navigation">...</nav>

<!-- 4. Associate error with input: -->
<input aria-describedby="error-msg">
<span id="error-msg" role="alert">Invalid email</span>

Uso no válido de ARIA

Errores habituales con ARIA:

<!-- BAD: ARIA role contradicts the element -->
<h2 role="button">Heading</h2>  <!-- don't turn a heading into a button -->

<!-- BAD: ARIA on an unsupported element -->
<div role="listitem">Item</div>  <!-- listitem must be inside list role -->

<!-- BAD: ARIA where HTML works fine -->
<p role="paragraph">Text</p>  <!-- p already has paragraph semantics -->

<!-- BAD: aria-label on hidden element -->
<span aria-hidden="true" aria-label="something">  <!-- contradictory -->

Roles de referencia

Los roles de referencia de ARIA ayudan a los usuarios de lectores de pantalla a desplazarse por las regiones de la página:

<div role="banner">     <!-- header for the whole page -->
<div role="navigation">  <!-- major navigation -->
<div role="main">        <!-- main content -->
<div role="complementary"> <!-- aside content -->
<div role="contentinfo"> <!-- page footer -->
<div role="search">      <!-- search form -->
<div role="form">        <!-- form with label -->

<!-- These are ONLY needed if using divs instead of semantic elements -->
<!-- Prefer the native HTML elements instead -->

Pruebas de la implementación de ARIA

Cómo verificar que ARIA es correcta:

  • Use el panel Accesibilidad de las herramientas de desarrollo de Chrome o Firefox
  • Escuche con VoiceOver (Mac) o NVDA (Windows)
  • Ejecute la extensión axe DevTools
  • Compruebe el árbol de accesibilidad: ¿refleja lo que esperaba?

Problema habitual con aria-hidden

Error habitual con aria-hidden:

<!-- BAD: aria-hidden on element that still receives focus -->
<button aria-hidden="true">Close</button>
<!-- The button is still focusable but invisible to screen readers
     Screen reader users reach it via Tab but hear nothing -->

<!-- GOOD: for focus + hide, use hidden attribute or display:none: -->
<button hidden>Close</button>  <!-- removes from both tab order and AT -->

<!-- Or: if you must keep visible: -->
<button style="display:none" aria-hidden="true">Close</button>

Comprobación rápida

¿Qué obtiene automáticamente al añadir role="button" a un div?

Repaso: ARIA frente a HTML nativo

Aspectos esenciales de ARIA:

  • Primera regla: use HTML nativo siempre que sea posible
  • ARIA solo añade semántica; debe implementar el comportamiento
  • Tres categorías: roles, propiedades y estados
  • Los roles de referencia facilitan la navegación de los lectores de pantalla
  • Pruebe con el panel Accesibilidad de las herramientas de desarrollo y con un lector de pantalla

Preguntas frecuentes

¿La lección «Cuándo usar ARIA frente a HTML nativo» es gratis?

Sí — el texto completo de «Cuándo usar ARIA frente a HTML nativo» 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 «Cuándo usar ARIA frente a HTML nativo»?

Siga la primera regla de ARIA: prefiera la semántica nativa 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 1 de 4.

¿Cuánto tiempo toma la lección «Cuándo usar ARIA frente a HTML nativo»?

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

  1. Cuándo usar ARIA frente a HTML nativo
  2. role button alert dialog y landmark
  3. aria-label aria-labelledby y aria-describedby
  4. aria-hidden y aria-live
← Volver a HTML Academy