3.3. Tablas

Las tablas son formas de organizar la información en un documento y constan de una o más filas con dicha información. Cada fila se divide en celdas, y estas celdas pueden tener o no tener tamaño definido, así como la tabla en sí.

Para definir una tabla, se utiliza la etiqueta <table> a modo de contenedor, y para definir cada una de sus filas, utilizamos la etiqueta <tr>. Cada una de las celdas en las filas de la tabla se enmarca con la etiqueta <td>, y se escribe <th> en vez de <td> cuando la celda es un encabezado de la tabla. Una tabla simple se escribe como en el ejemplo que sigue:

Ejemplo 3.5. Tabla simple con encabezado y datos

<table border="1">
  <tr><th>Nombre completo</th><th>Edad</th></tr>
  <tr><td>Pedro Perez</td><td>25</td></tr>
  <tr><td>Marta Sanchez</td><td>24</td></tr>
  <tr><td>Juan G&oacute;mez</td><td>27</td></tr>
</table>

El resultado de este fragmento de código se observa en la Figura 3.1, “Visualización de tabla simple con encabezado y datos”.

Figura 3.1. Visualización de tabla simple con encabezado y datos

Visualización de tabla simple con encabezado y datos

3.3.1. Tablas con formato

Para ajustar el ancho de la tabla en el documento, se puede utilizar el atributo width de la etiqueta <table>. El valor puede ser dado en píxeles o en porcentaje. El porcentaje corresponde a la proporción de espacio entre la margen izquierda y la derecha del documento a la hora de ser visualizado.

Ejemplo 3.6. Tabla simple con encabezado y datos e indicación del ancho de la tabla

<table border="1" width="50%">
  <tr><th>Nombre completo</th><th>Edad</th></tr>
  <tr><td>Pedro Perez</td><td>25</td></tr>
  <tr><td>Marta Sanchez</td><td>24</td></tr>
  <tr><td>Juan G&oacute;mez</td><td>27</td></tr>
</table>

Figura 3.2. Visualización de tabla simple con indicación de ancho de la tabla por porcentaje

Visualización de tabla simple con indicación de ancho de la tabla por porcentaje

Se puede aumentar el espaciado entre el texto y el borde de cada celda utilizando el atributo cellpadding de la etiqueta <table>. El valor asignado para este atributo, al igual que el valor del borde está en píxeles.

Ejemplo 3.7. Tabla simple con encabezado y datos, con indicación de espaciado de texto al margen

<table border="1" cellpadding="10">
  <tr><th>Nombre completo</th><th>Edad</th></tr>
  <tr><td>Pedro Perez</td><td>25</td></tr>
  <tr><td>Marta Sanchez</td><td>24</td></tr>
  <tr><td>Juan G&oacute;mez</td><td>27</td></tr>
</table>

El resultado de este código de ejemplo es el de la Figura 3.3, “Visualización de tabla simple con encabezado y datos e indicación de espaciado entre el texto y el borde de las celdas”.

Figura 3.3. Visualización de tabla simple con encabezado y datos e indicación de espaciado entre el texto y el borde de las celdas

Visualización de tabla simple con encabezado y datos e indicación de espaciado entre el texto y el borde de las celdas

También se puede jugar con el espacio entre una celda y otra por medio del atributo cellspacing de la misma etiqueta <table>.

Ejemplo 3.8. Tabla simple con encabezado y datos, con indicaciones de espaciado de texto al margen y espaciado entre celdas

<table border="1" cellpadding="10" cellspacing="5">
  <tr><th>Nombre completo</th><th>Edad</th></tr>
  <tr><td>Pedro Perez</td><td>25</td></tr>
  <tr><td>Marta Sanchez</td><td>24</td></tr>
  <tr><td>Juan G&oacute;mez</td><td>27</td></tr>
</table>

El resultado se observa en la Figura 3.4, “Visualización de tabla simple con encabezado y datos e indicación de espaciado entre el texto y borde de las celdas, además de espacio entre celdas”.

Figura 3.4. Visualización de tabla simple con encabezado y datos e indicación de espaciado entre el texto y borde de las celdas, además de espacio entre celdas

Visualización de tabla simple con encabezado y datos e indicación de espaciado entre el texto y borde de las celdas, además de espacio entre celdas

Para tener una tabla sin bordes, se le asigna el valor de 0 a los atributos cellspacing y border. Esto es útil cuando se utiliza una tabla como organización de la información de todo el contenido del documento y no queremos que se vean las divisiones de la tabla.

Por otra parte, se puede cambiar la alineación de los textos de las celdas de forma diferente a como se hace por defecto por parte de los navegadores Web, es decir, los títulos centrados y el contenido normal a la izquierda. Este cambio se logra con el atributo align y su valor asociado en inglés (centro = center, izquierda = left, derecha = right). Este atributo lo tienen las etiquetas <tr> y <td>. En el caso de que la alineación aplique para toda la fila, se pone este atributo a la etiqueta <tr> respectiva, mientras que si la alineación aplica solo para una celda, se coloca el atributo align a la etiqueta <td> señalada.

También se pueden dibujar celdas combinadas, es decir, celdas que tomen más de una columna o de una fila, ya sea que se quieran combinar celdas horizontal o verticalmente, según sea el caso. Para lograr esto, se le agregan los atributos colspan (combinación horizontal) o rowspan (combinación vertical) a las etiquetas de datos de la celda, es decir a las etiquetas <th> o <td> según sea el caso. Los valores de estos atributos son numéricos, e indican la cantidad de espacios a combinar hacia la derecha (en el caso horizontal) o hacia abajo (en el caso vertical). Veamos esto aplicado en un ejemplo:

Ejemplo 3.9. Tabla avanzada con aplicación de alineación de textos y celdas combinadas

<table border="1" width="50%">
  <tr align="center"><th rowspan="2">Nombre</th><th colspan="3">Notas</th></tr>
  <tr align="center"><th>Nota 1</th><th>Nota 2</th><th>Nota 3</th></tr>
  <tr align="center"><td>Pedro P&eacute;rez</td><td>4.5</td><td>3.8</td><td>4.2</td></tr>
  <tr align="center"><td>Juan G&oacute;mez</td><td>2.5</td><td>4.5</td><td>4.3</td></tr>
</table>

Esta tabla se vería en un navegador como aparece en la Figura 3.5, “Visualización de tabla avanzada con alineación de texto y combinación de celdas”.

Figura 3.5. Visualización de tabla avanzada con alineación de texto y combinación de celdas

Visualización de tabla avanzada con alineación de texto y combinación de celdas

3.3.2. Tablas accesibles

Teniendo en cuenta que la navegación en Internet también es posible para personas con problemas de la vista, entre otros, se puede agregar información a las tablas para ser interpretadas por estas personas más fácilmente, aunque en algunos casos también aplique para personas sin problemas visuales.

Por ejemplo, se puede agregar un título a la tabla, como los que aparecen en las tablas de este documento, diciendo básicamente de qué se trata la tabla. Esto se logra introduciendo una etiqueta <caption> al interior de la tabla, justo antes de comenzar a describir las filas y sus celdas. Por defecto este título aparecerá en la parte superior de la tabla, como aparece en el ejemplo a continuación. Para colocar este título en la parte inferior, se utiliza el atributo align="bottom" al interior de la etiqueta <caption>.

Ejemplo 3.10. Tabla simple con título

<table border="1" width="50%">
  <caption>Lista de estudiantes de la clase</caption>
  <tr><th>Nombre completo</th><th>Edad</th></tr>
  <tr><td>Pedro Perez</td><td>25</td></tr>
  <tr><td>Marta Sanchez</td><td>24</td></tr>
  <tr><td>Juan G&oacute;mez</td><td>27</td></tr>
</table>

Figura 3.6. Visualización de tabla con título

Visualización de tabla con título

Además del título, se puede agregar un resumen a la tabla, que no se visualiza, pero sí es leído en los navegadores para personas con problemas de ceguera. Este resumen se incluye como valor del atributo summary en la etiqueta <table>.

Ejemplo 3.11. Tabla simple con título y resumen

<table border="1" width="50%" 
    summary="Información de los estudiantes: nombre, edad">
  <caption>Lista de estudiantes de la clase</caption>
  <tr><th>Nombre completo</th><th>Edad</th></tr>
  <tr><td>Pedro Perez</td><td>25</td></tr>
  <tr><td>Marta Sanchez</td><td>24</td></tr>
  <tr><td>Juan G&oacute;mez</td><td>27</td></tr>
</table>

Asimismo, se puede agregar información adicional a las celdas, especialmente cuando son encabezados en columnas o filas. La información que se introduce le dice a navegadores especiales que dicha celda es el encabezado para la fila o para la columna según el caso. A esto se le denomina alcance de la celda, y se describe en el código con el atributo scope de las celdas, es decir, las etiquetas <th> o <td>, según el caso.

Ejemplo 3.12. Tabla simple con título, resumen y alcance de celdas de encabezado

<table border="1" width="50%" 
    summary="Información de los estudiantes: nombre, edad">
  <caption>Lista de estudiantes de la clase</caption>
  <tr><th scope="col">Nombre completo</th><th scope="col">Edad</th></tr>
  <tr><td>Pedro Perez</td><td>25</td></tr>
  <tr><td>Marta Sanchez</td><td>24</td></tr>
  <tr><td>Juan G&oacute;mez</td><td>27</td></tr>
</table>