Accesibilidad web: ¿Cómo hacer tablas accesibles?

Introducción

Las tablas son un elemento más que forman parte de los sitios web.

Para las personas videntes pueden resultar cómodas y fáciles de interpretar, pero para las personas que usen lectores de pantallas puede ser un problema de accesibilidad.

¿Para qué sirven las tablas?

Las tablas sirven para mostrar información tabular. La información tabular permite consultar y analizar datos. Las tablas no se deben utilizar para la presentación de los contenidos en la web y, por tanto, no se debe usar para la maquetación de nuestro sitio web.

¿Cómo hacemos nuestras tablas accesibles?

En las WCAG 2.0 en el Criterio de Conformidad 1.3.1 Información y relaciones, hay una serie de técnicas que tenemos que tener en cuenta cuando tengamos que insertar en nuestros contenidos una tabla de datos:

Es importante describir la tabla

Debemos proporcionar información adicional sobre la tabla. Así describiremos el propósito de la misma y también se recomienda informar de su estructura. Disponemos de dos métodos complementarios:

  • el atributo summary dentro de la etiqueta <table>
  • la etiqueta <caption> dentro de la tabla.

 

Así se informará a los usuarios de productos de apoyo, como los lectores de pantalla. Por ejemplo, si es un listado de notas, lo debemos indicar. Si en la misma página hay múltiples listados de notas, deberemos incluir en la descripción, la asignatura para permitir al que navega saltar todas las tablas que no le interesen.

Es como poner un título y una leyenda a la tabla para que los usuarios sepan cuál es la información de la tabla, algo que me recuerda al tema de los formularios con el uso de fieldset y la etiqueta <legend>

<table summary"Notas del curso 2015-2016">
<caption>Notas finales del curso de accesibilidad</caption>
</table>
  • En las tablas de maquetación no debemos incluir el atributo summary.
  • El elemento caption y el atributo summary se pueden usar conjuntamente y no deben tener el mismo contenido.

Las tablas deben ser uniformes

Las tablas deben ser uniformes, evitando dividir, combinar o vincular celdas, y por lo tanto tienen que tener el mismo número de filas por columna y el mismo número de columnas por fila.

Para mayor facilidad de de uso y compresión de las tablas se recomienda hacer tablas simples en vez de tablas complejas.

Uso de encabezados

Las tablas deben tener definidos correctamente los encabezados con la etiqueta <th>, ya sea horizontalmente como verticalmente.

Cuando la tabla tiene una disposición de agrupación de columnas o filas, hace mucho más complicado su consulta. Disponemos del atributo scope para poder indicar que el campo actual es la cabecera de la columna o fila que hay a continuación.

En esta primera tabla la cabecera superior se corresponde con la ordenación posterior de los datos. Por tanto en cada <th> incluiremos el atributo scope=”col”.

tabla1

<thead>
<tr>
<th scope="col">Alumno</th>
<th scope="col">Nota</th>
</tr>
</thead>
<tbody>...</tbody>

Ahora vamos a trabajar con una segunda tabla, en la que tenemos una doble agrupación. En la fila superior dispondremos de <th> con el atributo scope=”col” como anteriormente, pero en la primera celda de cada fila tenemos un nuevo th en vez de td e indicaremos el atributo scope=”row”.

Hemos utilizado la técnica H63.

<thead>
<tr>
<th scope="col">Alumno</th>
<th scope="col">Sesión 1</th>
...
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Marta</th>
<td>8</td>
<td>9</td>
<td>9</td> ...
</tr>
</tbody>

tabla2

Tablas de datos complejas

Para explicar cómo hacer hacer accesible una tabla compleja nada mejor que explicarlo con un ejemplo. Imaginemos que tenemos una tabla en la que se muestra un horario escolar.

Tabla compleja: horario escolar

Es una tabla de datos compleja porque para una celda de datos tiene asociados dos encabezados.  “Matemáticas” tiene dos encabezados: uno de columna “lunes” y uno de fila de las “8:00 a las 9:00.”

Mediante los atributos id y headers los lectores de pantalla serán capaces de informar a los usuarios sobre cuáles son los encabezados correspondientes a la celda actual, independientemente de la complejidad de la tabla:

  • id, se utiliza en las celdas de encabezado <th> para proporcionar un identificador que ha de ser único.
  • headers, se usa en las celdas de datos <td>, con el valor de los id correspondientes.

 

<table>
<caption>Horario de Primero A</caption>
</<tr>
<td>
</<th id=“l”>Lunes</th>
<th id=“m”>Martes</th>
<th id=“x”>Miércoles</th>
</tr>
<tr>
<th id=“h_1”>8:00-9:00h</th>
<td headers=“h_1 l”>Matemáticas</td>
<td headers=“h_1 m”>Inglés</td>
<td headers=“h_1 x”>Música</td>
</tr>
<tr>
<th id=“h_2”>9:00-10:00h</th>
<td headers=“h_2 l”>Lengua</td>
<td headers=“h_2 m”>E.Física</td>
<td headers=“h_2 x”>Lengua</td>
</tr>
</table>

Si examinamos el ejemplo anterior:

  • Para el encabezado lunes se ha definido un id con el valor l.
  • Para el encabezado martes se ha definido un id con el valor m.
  • Para el encabezado miércoles se ha definido un id con el valor x.
  • Para el encabezado de 8:00 a 9:00, un id con el valor h_1.
  • Para el encabezado de 9:00 a 10:00, id con el valor h_2.

Una vez determinados los identificadores a los encabezados vamos a relacionarlos con las celdas de datos, de la siguiente manera:

  • En la celda de datos matemáticas, el valor de headers será el id del encabezado de fila de la franja horaria de 8:00 a 9:00, h_1 y el del id del encabezado columna lunes, l.

De esta forma, se ha definido el valor de todos los headers para todas las celdas de datos de la tabla.

Resumen

  • Una tabla de datos simple es aquella en la que, una celda de datos sólo se relaciona con un encabezado o de fila o de columna, es suficiente el uso de th para identificarlos. Por lo tanto es suficiente con implementar la técnica anteriormente vista H51.
  • Una tabla de datos compleja, es aquella en la que una celda de datos se relaciona con más de un encabezado de fila y/o columna, y por tanto hemos de establecer la asociación entre las celdas de datos con sus celdas de encabezado, utilizando la técnica H63 o la técnica H43.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *