Tablas en CSS: legibles, compactas y responsive

Crea tablas claras con zebra, alineación correcta y patrones responsive sin perder accesibilidad.

Aplica un estilo base para separar filas y mejorar lectura.

Usa zebra y hover para escaneo rápido de datos.

Añade un wrapper con overflow-x para tablas anchas.

En móvil, apila filas con data-label para evitar scroll excesivo.

  • El estilo base define claridad y consistencia.
  • Usa border-collapse para eliminar espacios dobles entre celdas.
  • Define width: 100% y table-layout: fixed para controlar el ancho.
  • Un caption ayuda a contextualizar los datos y mejora accesibilidad.
  • Alinea texto con text-align: left en th y td.

Base sólida para tablas

El estilo base define claridad y consistencia.

Usa border-collapse para eliminar espacios dobles entre celdas.

Define width: 100% y table-layout: fixed para controlar el ancho.

Un caption ayuda a contextualizar los datos y mejora accesibilidad.

  • Alinea texto con text-align: left en th y td.
  • Usa padding generoso para aumentar legibilidad.
  • Evita bordes pesados; mejor líneas suaves.

Zebra y hover para lectura rápida

Ayuda a distinguir filas en tablas densas.

Las filas alternadas mejoran la lectura en tablas grandes.

El hover aporta feedback cuando se exploran datos.

Alinea números a la derecha para comparar valores.

Tablas responsive con scroll horizontal

La solución más segura para tablas anchas.

Envuelve la tabla en un contenedor con overflow-x: auto.

Define un min-width en la tabla para evitar que las celdas se aplasten.

En móvil, el scroll horizontal es aceptable si está bien señalado.

Tabla apilada en móvil

Convierte filas en tarjetas usando data-label.

El patrón apilado reduce el scroll y mejora lectura en móviles.

Cada td muestra su encabezado con ::before usando attr(data-label).

Úsalo en tablas de pocas columnas para no sobrecargar la interfaz.

CSS
12

Tablas en CSS: legibles, compactas y responsive

Crea tablas claras con zebra, alineación correcta y patrones responsive sin perder accesibilidad.

Código del tema: display: grid; gap: 1rem;

📘 Teoría

Base sólida para tablas

El estilo base define claridad y consistencia.

Usa border-collapse para eliminar espacios dobles entre celdas.

Define width: 100% y table-layout: fixed para controlar el ancho.

Un caption ayuda a contextualizar los datos y mejora accesibilidad.

  • Alinea texto con text-align: left en th y td.
  • Usa padding generoso para aumentar legibilidad.
  • Evita bordes pesados; mejor líneas suaves.
Estilo base
table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
}

th, td {
  padding: 10px 12px;
  border-bottom: 1px solid #e2e8f0;
  text-align: left;
}

Zebra y hover para lectura rápida

Ayuda a distinguir filas en tablas densas.

1

Las filas alternadas mejoran la lectura en tablas grandes.

2

El hover aporta feedback cuando se exploran datos.

3

Alinea números a la derecha para comparar valores.

Zebra + hover
tbody tr:nth-child(even) {
  background: #f8fafc;
}

tbody tr:hover {
  background: #e2e8f0;
}

.td-number {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

Tablas responsive con scroll horizontal

La solución más segura para tablas anchas.

1

Envuelve la tabla en un contenedor con overflow-x: auto.

2

Define un min-width en la tabla para evitar que las celdas se aplasten.

3

En móvil, el scroll horizontal es aceptable si está bien señalado.

Wrapper responsive
.table-wrap {
  overflow-x: auto;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
}

.table-wrap table {
  min-width: 560px;
}

Tabla apilada en móvil

Convierte filas en tarjetas usando data-label.

1

El patrón apilado reduce el scroll y mejora lectura en móviles.

2

Cada td muestra su encabezado con ::before usando attr(data-label).

3

Úsalo en tablas de pocas columnas para no sobrecargar la interfaz.

Apilado móvil
@media (max-width: 640px) {
  table, thead, tbody, tr, th, td {
    display: block;
  }

  thead {
    display: none;
  }

  tr {
    border: 1px solid #e2e8f0;
    border-radius: 12px;
    margin-bottom: 12px;
    padding: 8px;
  }

  td {
    display: grid;
    grid-template-columns: 120px 1fr;
    gap: 8px;
  }

  td::before {
    content: attr(data-label);
    font-weight: 600;
    color: #64748b;
  }
}

🧪 Aprende probando

Ejemplo Tabla base Estilo simple con buen espaciado.
Ejemplo Zebra y hover Mejora el escaneo de datos con estilos alternos.
Ejemplo Scroll horizontal Patrón seguro para tablas anchas en móvil.

🏁 Retos

Reto Reto: header sticky Haz que el encabezado se mantenga visible al hacer scroll.

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .