Perceptible Adaptable Nivel A WCAG 2.0, 2.1, 2.2

1.3.1 Información y relaciones

Meta La estructura visual y las relaciones entre elementos deben estar determinadas programáticamente mediante HTML semántico.
Qué hacer Usa encabezados, listas, tablas y otros elementos HTML semánticos para representar la estructura y relaciones del contenido.
Por qué importa Los usuarios de lectores de pantalla solo pueden entender la estructura si está en el marcado, no únicamente en la presentación visual.

Criterio de éxito oficial

Nivel A Presente en WCAG 2.0 · 2.1 · 2.2

La información, la estructura y las relaciones transmitidas a través de la presentación pueden determinarse programáticamente o están disponibles en el texto.

Nota sobre el color

Los valores de color no necesitan determinarse programáticamente. La información transmitida por el color se aborda en el Criterio 1.4.1 (Uso del color), no en este criterio.

¿Qué es?

El contenido web incluye pistas visuales y sonoras que muestran cómo se conectan los elementos: diseño, color, negrita, cursiva, tamaño de fuente, agrupaciones, tablas, efectos de sonido... Estas pistas ayudan a comprender significado y estructura, pero si alguien usa un lector de pantalla o no ve la pantalla, esas pistas pueden perderse.

Este criterio exige que cualquier información o relación que se muestre visualmente (o con sonido) también esté codificada correctamente usando HTML semántico o ARIA, para que la tecnología de asistencia pueda comprenderla y compartirla con los usuarios.

Encabezados

Jerarquía del contenido

<h1>–<h6>
Listas

Elementos agrupados

<ul> <ol> <li>
Tablas

Datos en filas y columnas

<table> <th>
Formularios

Campos con etiquetas

<label> <fieldset>
Regiones

Áreas de la página

<header> <main>
Énfasis

Texto importante

<strong> <em>

¿Por qué es importante?

Las personas que no pueden ver ni oír el contenido podrían no captar todo el significado si este solo se transmite mediante la apariencia o el sonido. Cuando estas señales no están disponibles, la tecnología de asistencia necesita ayuda adicional a través de una codificación adecuada.

Incluso opciones de formato sutiles — como juntar elementos visualmente o cambiar el tamaño de fuente — pueden comunicar relaciones importantes. Sin codificar estas relaciones, pasan desapercibidas para quienes usan lectores de pantalla o pantallas braille.

Sin semántica

<div class="big-bold">Título de la página</div>

<div>Un párrafo de texto...</div>

<div class="bold">Subtítulo</div>

<div>- Elemento uno</div>

<div>- Elemento dos</div>

Con semántica

<h1>Título de la página</h1>

<p>Un párrafo de texto...</p>

<h2>Subtítulo</h2>

<ul>

  <li>Elemento uno</li>

  <li>Elemento dos</li>

</ul>

¿Quién se ve afectado?

Personas con discapacidad visual — Usan lectores de pantalla que se basan en la estructura del código para comprender la página. Si el contenido solo parece estructurado visualmente pero no está codificado como tal, se pierde información crucial.

Personas sordociegas — Usan pantallas braille actualizables que dependen completamente de la estructura programática del código. Sin marcado semántico, no pueden acceder a la información transmitida por color o formato.

Personas con discapacidades cognitivas — Se benefician de una estructura clara y consistente. Los encabezados bien organizados y las etiquetas descriptivas facilitan la navegación y comprensión del contenido.

Cómo implementar 1.3.1

Principio fundamental

Primero HTML semántico, después ARIA. ARIA solo debería usarse cuando no existe una solución HTML nativa. Las etiquetas HTML semánticas son siempre la primera opción.

Regiones de página (landmarks)

Los puntos de referencia ayudan a los usuarios de tecnología de asistencia a acceder a las partes clave de una página sin recorrerla línea por línea:

  • <header> — Contiene elementos del sitio: logotipo, navegación principal
  • <nav> — Menús o enlaces de navegación
  • <main> — Contenido principal de la página
  • <aside> — Contenido complementario
  • <footer> — Información del pie de página

Encabezados

Más del 70 % de los usuarios de lectores de pantalla navegan mediante encabezados (según la encuesta de WebAIM 2023). Usa <h1> a <h6> en orden lógico sin saltar niveles (no pases de <h1> a <h4>).

Listas

Usa siempre elementos HTML de lista: <ul> para listas desordenadas, <ol> para listas ordenadas, y <li> para cada elemento. No simules listas con guiones, asteriscos o saltos de línea.

Tablas

Para datos en filas y columnas, usa el marcado de tabla HTML con <table>, <tr>, <th>, <td> y <caption>. Evita crear tablas con espaciado o tabulaciones.

HTML
<table>
  <caption>Horario de autobuses — Línea 5</caption>
  <thead>
    <tr>
      <th scope="col">Parada</th>
      <th scope="col">Bus A</th>
      <th scope="col">Bus B</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Centro</th>
      <td>8:00</td>
      <td>8:30</td>
    </tr>
  </tbody>
</table>

Controles de formulario

Cada campo necesita un <label> conectado con for. Para campos relacionados (como dirección), agrúpalos con <fieldset> y <legend>:

HTML
<fieldset>
  <legend>Dirección de envío</legend>
  <label for="calle">Calle:</label>
  <input id="calle" type="text">
  <label for="cp">Código postal:</label>
  <input id="cp" type="text">
</fieldset>

Señales de estilo

Si usas color, negrita o iconos para transmitir información (como asteriscos rojos para campos obligatorios), asegúrate de explicarlo también en texto o con marcado adecuado para que los lectores de pantalla lo anuncien.

ARIA como complemento

Cuando no existe una solución HTML nativa, usa atributos ARIA como role, aria-labelledby o aria-describedby.

Regla de oro

Las etiquetas HTML nativas siempre son mejores que los roles ARIA equivalentes. Usa <nav> en lugar de <div role="navigation">, <h2> en lugar de <div role="heading">. ARIA es un complemento, no un sustituto.

Ejemplos prácticos

Formulario Campos obligatorios con color y texto

Un formulario muestra campos obligatorios con etiquetas en rojo y un asterisco (*). Las instrucciones al inicio explican «Todos los campos obligatorios están en rojo y marcados con un asterisco *». Tanto el color rojo como el icono se asocian programáticamente con los campos mediante <label> y aria-required="true".

Tabla Horario de autobuses con encabezados

Un horario de autobús usa una tabla HTML con paradas en la primera columna y autobuses en la primera fila. Las paradas y autobuses se marcan con <th scope="row"> y <th scope="col"> para que la tecnología de asistencia pueda determinar qué autobús y parada corresponden a cada hora.

Formulario Casillas de verificación con etiquetas programáticas

Un grupo de casillas de verificación para seleccionar preferencias de contacto está agrupado con <fieldset> y <legend>. Cada <input type="checkbox"> tiene su <label> asociado mediante el atributo for.

Catálogo Precios con símbolo de moneda

Un catálogo online muestra precios en fuente grande y color rojo. Los precios siempre van precedidos del símbolo de moneda (€), por lo que los usuarios que no perciben el color rojo ni el tamaño de fuente siguen identificando los precios correctamente.

Técnicas recomendadas

Técnicas clave por categoría
CategoríaTécnicas principales
Regiones de páginaARIA11, H101, ARIA13, ARIA20, H97
EncabezadosH42, ARIA12, G141, PDF9
Elementos semánticosG115 + H49, G117, G140, ARIA24
TablasH51, H39, H63, H43, PDF6, PDF20
FormulariosH44, H65, H71, H85, ARIA16, ARIA17
ListasH48, PDF21
Color como señalG138

Importante

Este es uno de los criterios con más incumplimientos en la web y uno de los más importantes para la accesibilidad en el mundo real. Si tu contenido tiene significado en su diseño, estilo o estructura, asegúrate de que esos significados también estén integrados en el código.

Errores comunes

F2: Usar cambios en la presentación del texto (negrita, tamaño, color) para transmitir información sin marcado semántico que lo respalde.
F33/F34: Usar caracteres de espacio en blanco para crear columnas o tablas en contenido de texto plano en lugar de marcado HTML real.
F42: Emular enlaces usando JavaScript o estilos en lugar de elementos <a> reales.
F43: Usar marcado estructural de manera incorrecta (ej: usar <blockquote> para indentar en vez de para citas).
F46: Usar <th> en tablas de diseño que no son tablas de datos.
F48: Usar <pre> para marcar información tabular en lugar de una tabla HTML real.
F90/F91: Asociar incorrectamente encabezados de tabla con celdas de datos, o no marcar encabezados de tabla.
F92: Usar role="presentation" en contenido que transmite información semántica.
F111: Control con texto de etiqueta visible pero sin nombre accesible programático.

Criterios de éxito relacionados