Maquetación de tablas
Estructura
thead, th, tbody, tr, td
| cabeceras th |
cabeceras th |
cabeceras th |
cabeceras th |
cabeceras th |
cabeceras th |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
<-- thead
<-- tbody
Estilizando tablas
Espaciado entre celdas
Las tablas nos vienen con un formato predefinido que separa las celdas generando huecos muy feos. Si queremos colapsar esos espacios usaremos 'border-collapse: collapse' en lugar de 'separate':
| cabeceras th |
cabeceras th |
cabeceras th |
cabeceras th |
cabeceras th |
cabeceras th |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
No obstante si mantenemos 'border-collapse: separate' y añadimos 'border-spacing: 1em' podemos controlar el espaciado entre celdas:
| cabeceras th |
cabeceras th |
cabeceras th |
cabeceras th |
cabeceras th |
cabeceras th |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
| contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
contenido en td |
Atributos de tabla
Estos atributos están en desuso desde la estandarización que trajo consigo HTML5. No obstante se siguen utilizando para determinados casos, como puede ser la maquetación de newsletters.
- align: Alinea horizontalmente la tabla con respecto a su entorno. Aplicado a una celda, alinea su contenido.
- background: Permite colocar un fondo a la tabla, a partir de un enlace a una imagen.
- bgcolor: Permite dar un color de fondo a la tabla.
- border: Define el número de pixels del borde principal.
- bordercolor: Define el color del borde.
- cellpadding: Define el espacio entre los bordes de la celda y el contenido de la misma (píxeles). Aplicado a un 'td' y comparandolo con un 'div' equivale al padding de la celda.
- cellspacing: Define el espacio entre los bordes, cuando están separados (pixels). Aplicado a un 'td' y comparandolo con un 'div' equivale al margin de la celda.
- height: Define la altura de la tabla, fila o celda en pixels o porcentaje.
- width: Define la anchura de la tabla, fila o celda en pixels o porcentaje.
Atributos de <table>
Border
Esta tabla tiene un atributo 'border="1"'.
| cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
Esta tabla tiene un atributo 'border="0"'
| cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
Esta tabla tiene un atributo 'border=" "' vacío. Por tanto muestra el valor por defecto, con bordes.
| cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
Esta tabla tiene un atributo 'border="0"'. Pero por CSS se le está aplicando la regla 'border:2px solid #cdcdcd;'. Si queremos bordes en el resto de la tabla hay que dar estilos a las etiquetas <th> y <td>
| cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
Atributos de <table> de <th> y <td>
align
Esta tabla tiene un atributo align="left". La celda <td> debajo de la de contenido más largo también lleva un align="left"
| cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
| contenido |
contenido |
contenido más largo |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
Esta tabla tiene un atributo align="center". La celda <td> debajo de la de contenido más largo también lleva un align="center"
| cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
| contenido |
contenido |
contenido más largo |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
Esta tabla tiene un atributo align="right". La celda <td> debajo de la de contenido más largo también lleva un align="right"
| cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
| contenido |
contenido |
contenido más largo |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
Atributos de <table> de <th> y <td>
colspan & rowspan: Unificación de celdas.
Los atributos colspan y rowspan permiten unir una celda con las celdas contiguas, tanto horizontal como verticalmente. El valor de colspan indica la cantidad de celdas unidas en horizontal y el valor de rowspan indica la cantidad de celdas unidas en vertical.
Esta tabla tiene un atributo colspan="2" en la celda destacada por lo que ocupa 2 columnas dentro de su fila. Para evitar un descuadre se ha eliminado una celda en esa fila.
| cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
| contenido |
contenido |
contenido más largo |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
Esta tabla tiene un atributo rowspan="3" en la celda destacada por lo que ocupa 3 filas dentro de su columna. Para evitar un descuadre se han eliminado una celda de las dos filas siguientes.
| cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
| contenido |
contenido |
contenido más largo |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
Esta tabla tiene un atributo rowspan="3" y colspan="4" en la celda destacada, por lo que esa celda ocupa 3 filas y 4 columnas. Para evitar un descuadre se han eliminado las celdas sobrantes tras unificarlas.
| cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
| contenido |
contenido |
contenido más largo |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
| contenido |
contenido |
| contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
Etiquetas de <table> de <th> y <td>
Colgroup & col: Selectores de columnas
La etiqueta <colgroup> especifica un grupo de una o más columnas en una tabla para formatear.
La etiqueta <colgroup> es útil para aplicar estilos a columnas enteras, en lugar de repetir los estilos para cada celda, para cada fila.
Nota: La etiqueta <colgroup> debe ser hija de un elemento <table>, después de cualquier elemento <caption> y antes de cualquier elemento <thead>, <tbody>, <tfoot> y <tr>.
Esta tabla tiene un elemento <col span="2"> dentro de un elemento <colgroup> que está antes de la tabla y que aplica el color de fondo destacado a las dos primeras columnas. Pero también tiene otro elemento <col span="4"> que le aplica un estilo en línea con el fondo gris.
| cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
| contenido |
contenido |
contenido más largo |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
Esta tabla tiene un elemento <col span="1"> dentro de un elemento <colgroup> que le aplica el color de fondo destacado. Se lo aplica a la 4ª columna porque antes hay 3 elementos <col> sin atributo que les aplique regla alguna.
| cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
| contenido |
contenido |
contenido más largo |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
Esta tabla tiene un elemento <col> para cada columna, dentro de un elemento <colgroup>. Todos ellos se llevan style="width: 15%;" para darle a todas las columnas el mismo ancho relativo.
| cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
| contenido |
contenido |
contenido más largo |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
Fijar elementos de la tabla
Fijar la cabecera y/o la 1ª columna
En muchas ocasiones nos piden fijar la cabecera u otros elementos de una tabla cuando hay mucho contenido y se genera un scroll.
Esta tabla tiene la cabecera fija. Se le da propiedades al elementos 'th'
| cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
Esta tabla tiene la primera columna fija. Se le da propiedades al primer elemento 'td' de cada 'tr'.
| cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
Esta tabla tiene un elemento <col> para cada columna, dentro de un elemento <colgroup>. Todos ellos se llevan style="width: 15%;" para darle a todas las columnas el mismo ancho relativo.
| cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
cabeceras |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |
| contenido |
contenido |
contenido |
contenido |
contenido |
contenido |