Saltar al contenido
Accesibilidad Web (WCAG)
Accesibilidad Web (WCAG) Texto Leccion

HTML Semántico para Accesibilidad

El HTML Semántico es la Base de Todo El HTML semántico usa los elementos correctos para su propósito: un botón es un <button>, un encabezado es un <h1>, una lista es un <ul>. Parece obvio, pero la mayoría de los problemas de accesibilidad se resolverían usando el HTML correcto en lugar de divs genéricos con estilos. Elementos semánticos esenciales <header>, <nav>, <main>, <footer>: las landmarks que los lectores de pantalla usan para navegar la página &l
Tiempo de estudio
15 Min

El HTML Semántico es la Base de Todo


El HTML semántico usa los elementos correctos para su propósito: un botón es un <button>, un encabezado es un <h1>, una lista es un <ul>. Parece obvio, pero la mayoría de los problemas de accesibilidad se resolverían usando el HTML correcto en lugar de divs genéricos con estilos.


Elementos semánticos esenciales



  • <header>, <nav>, <main>, <footer>: las landmarks que los lectores de pantalla usan para navegar la página

  • <h1> a <h6>: jerarquía de títulos — SIEMPRE en orden descendente, nunca saltar niveles (h1 → h3 sin h2 es un error)

  • <button>: para acciones interactivas — NUNCA uses <div onclick> como botón (no es accesible por teclado)

  • <a>: para navegación a otra página o sección — tiene focus, hover y es anunciado por lectores de pantalla automáticamente

  • <ul>/<ol>/<li>: para listas — los lectores de pantalla anuncian 'lista con 5 elementos', dando contexto al usuario


Imágenes accesibles



  • Toda imagen informativa necesita un alt descriptivo: alt='Gráfico de barras mostrando ventas creciendo 30% en Q2'

  • Imágenes decorativas usan alt vacío: alt='' — así el lector de pantalla las ignora en lugar de decir 'imagen'

  • Nunca pongas alt='imagen de...' o alt='foto de...' — el lector de pantalla ya dice 'imagen', sería redundante

  • Para imágenes complejas (gráficos, infografías), añade una descripción larga debajo o en un enlace 'Descripción detallada'

  • Los SVG necesitan role='img' y un aria-label para ser accesibles


Tablas accesibles



  • Usa <table> solo para datos tabulares, NUNCA para layout de página (eso es de 1999)

  • <thead> con <th> para encabezados de columna — los lectores de pantalla asocian cada celda con su encabezado

  • scope='col' en <th> de columnas y scope='row' en <th> de filas — clarifica la relación datos-encabezado

  • <caption>: un título descriptivo para la tabla que los lectores de pantalla anuncian al encontrarla

  • Para tablas complejas con celdas combinadas, usa headers e id para asociaciones explícitas


Ejemplo práctico


<!-- MAL: div como botón -->
<div class="btn" onclick="handleClick()">Enviar</div>

<!-- BIEN: button semántico -->
<button type="submit" class="btn">Enviar</button>

<!-- MAL: imagen sin alt -->
<img src="chart.png">

<!-- BIEN: imagen con alt descriptivo -->
<img src="chart.png" alt="Ventas mensuales: enero $5K, febrero $8K, marzo $12K">

<!-- MAL: jerarquía de títulos rota -->
<h1>Mi Sitio</h1>
<h3>Sección</h3> <!-- Saltó h2! -->

<!-- BIEN: jerarquía correcta -->
<h1>Mi Sitio</h1>
<h2>Sección</h2>

Consejo: Antes de agregar un ARIA attribute, pregúntate: ¿hay un elemento HTML nativo que haga esto? En el 90% de los casos, la respuesta es sí y es mejor usarlo.
Texto Leccion 1/12
Estas viendo
HTML Semántico para Accesibilidad