Modificar tablas con CSS

Este post hablará de propiedades específicas de las tablas que se pueden modificar en CSS. El elemento <table> cuenta con propiedades específicas a mayores de las propiedades comunes como el border, padding, backgrounds y tamaños. Las propiedades específicas son:

  • Border-collapse
  • Border-spacing
  • Caption-side
  • Empty-cells
  • Table-layout

Cabe mencionar que las propiedades comunes, excepto background-color y height, es mejor modificarlas mediante las celdas de manera individual (<td> y <th>) evitando modificarlas mediante fila (<tr>). Esto se debe a que el soporte de los navegadores de esas propiedades en filas no es tan bueno como en celdas individuales.

Border-collapse

En la zona donde hay 2 celdas adyacentes puedes indicar si comparten un borde común o se muestran los 2 de manera independiente. Esta es la función de la propiedad y cuenta con los siguientes valores

Valor Función
collapse Los bordes horizontales y verticales se colapsan siendo uno.
separate Los bordes están están separados y no se cruzan.

En caso de que 2 celdas adyacentes tengan un estilo de borde distinto, por ejemplo, uno tiene una línea sólida y otra por puntos e indicas que los bordes se colapsen, no se puede saber cuál será el borde común resultante, si la de puntos o la línea sólida.

table-border-collapse

Border-collapse con collapse (arriba) y separate (abajo)

Border-spacing

Esta propiedad establece la distancia que separa 2 celdas adyacentes. Si das un valor se aplica a los bordes verticales y horizontales. En caso de dar 2 valores, el primero se vuelve para el espaciado horizontal y el segundo para el vertical.

El código HTML es igual que el anterior solo que cambiando las clases de las tablas.

table-border-spacing

Resultado border-spacing

Empty-cells

Establece si una celda sin contenido debería mostrar el borde.

Valor Función
show Los bordes se muestran si la celda está vacía (por defecto).
hide Los bordes se oculta si la celda está vacía.
inherit Los bordes obedecen las reglas de la tabla contenedora.

table-empty-cells

Resultado empty-cells

Caption-side

Con esta propiedad se puede indicar qué lado de la tabla se sitúa el elemento <caption>.

Valor Función
top Top Aparece encima de la tabla (Por defecto).
right El elemento aparece a la derecha de la tabla.
bottom Caption se situará bajo la tabla
left El elemento se sitúa en el lado izquierdo.

El CSS será igual que el ejemplo anterior, sólo que añadiremos la regla para el <caption>

En cuanto al HTML la tabla también será la misma, pero hay que añadirle el <caption>

table-caption-side

Ejemplo caption-side

Table-layout

Cuando especificas el ancho de una tabla o una celda, pero el contenido no encaja en el espacio asignado puedes dar a la tabla más espacio para albergar el contenido. Esta propiedad permite forzar al navegador mantener el contenido en el ancho especificado, aunque esto haga el contenido ilegible.

Valor Función
auto El navegador revisa la tabla entera por el contenido más ancho. Esto es más lento de renderizar pero ideal si no sabes el tamaño exacto de la columna (por defecto).
right El elemento aparece a la derecha de la tabla.
fixed El ancho de las celdas solo depende de la medida especificada en la tabla y sus celdas. Esto acelera el renderizado.
inherit Sigue las reglas de la tabla contenedora (En caso de usar tablas anidadas).

tables-table-layout

Table-layout con valor auto (arriba) y fixed (abajo)

Y aquí termina el tutorial de hoy, espero que le saquéis partido. Buen finde 🙂