Ejercicio práctico 6: Tablas en HTML
En este ejercicio práctico aprenderás a insertar y configurar una tabla con tres filas y tres columnas usando la etiqueta <table>.
Actividad
Crea una tabla con tres filas y tres columnas usando la etiqueta <table>.
Solución interactiva
Solución con el código HTML completo
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<title>Tablas</title>
</head>
<body>
<h1>Tabla</h1>
<table border="1">
<tr>
<th>Encabezado 1</th>
<th>Encabezado 2</th>
<th>Encabezado 3</th>
</tr>
<tr>
<td>Fila 1, Columna 1</td>
<td>Fila 1, Columna 2</td>
<td>Fila 1, Columna 3</td>
</tr>
<tr>
<td>Fila 2, Columna 1</td>
<td>Fila 2, Columna 2</td>
<td>Fila 2, Columna 3</td>
</tr>
</table>
</body>
</html>
Variantes del mismo ejercicio
Variante 1: Tabla con estructura semántica completa
Las tablas HTML5 tienen etiquetas semánticas que separan el encabezado, el cuerpo y el pie de la tabla. Esto mejora la accesibilidad y permite estilizar cada sección por separado.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<title>Tabla Semántica</title>
</head>
<body>
<h1>Ventas Mensuales</h1>
<table border="1">
<thead>
<tr>
<th>Producto</th>
<th>Enero</th>
<th>Febrero</th>
<th>Marzo</th>
</tr>
</thead>
<tbody>
<tr>
<td>Laptops</td>
<td>$12,000</td>
<td>$15,000</td>
<td>$18,000</td>
</tr>
<tr>
<td>Monitores</td>
<td>$8,000</td>
<td>$9,500</td>
<td>$11,000</td>
</tr>
</tbody>
<tfoot>
<tr>
<th>Total</th>
<td>$20,000</td>
<td>$24,500</td>
<td>$29,000</td>
</tr>
</tfoot>
</table>
</body>
</html>
<thead>: agrupa las filas de encabezado. Los lectores de pantalla lo identifican como encabezado de columna.<tbody>: contiene los datos principales de la tabla.<tfoot>: fila de resumen o totales al pie de la tabla. Aunque se escribe antes o después de<tbody>, el navegador siempre lo muestra al final.
Variante 2: Celdas combinadas con colspan y rowspan
Para tablas más complejas como horarios o calendarios, colspan y rowspan permiten que una celda ocupe múltiples columnas o filas.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<title>Horario de Clases</title>
</head>
<body>
<h1>Horario Semanal</h1>
<table border="1">
<thead>
<tr>
<th>Hora</th>
<th>Lunes</th>
<th>Martes</th>
<th>Miércoles</th>
</tr>
</thead>
<tbody>
<tr>
<td>08:00 - 10:00</td>
<td>Matemáticas</td>
<td>Física</td>
<td>Matemáticas</td>
</tr>
<tr>
<td>10:00 - 12:00</td>
<td colspan="3" align="center">Taller de Programación (todos los días)</td>
</tr>
<tr>
<td>12:00 - 14:00</td>
<td rowspan="2">Laboratorio</td>
<td>Inglés</td>
<td>Laboratorio</td>
</tr>
<tr>
<td>14:00 - 16:00</td>
<td>Deportes</td>
<td>Inglés</td>
</tr>
</tbody>
</table>
</body>
</html>
colspan="3": la celda "Taller de Programación" ocupa 3 columnas (Lunes + Martes + Miércoles).rowspan="2": la celda "Laboratorio" ocupa 2 filas en la columna del Lunes.
Variante 3: Tabla sin bordes HTML
El atributo border está obsoleto en HTML5. Lo correcto es dejar que CSS maneje los bordes y estilos visuales.
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<title>Tabla con Estilo CSS</title>
<style>
table {
border-collapse: collapse;
width: 100%;
}
th, td {
border: 2px solid #333;
padding: 8px;
text-align: left;
}
th {
background-color: #f2f2f2;
color: #333;
}
</style>
</head>
<body>
<h1>Tabla Estilizada con CSS</h1>
<table>
<thead>
<tr>
<th>Nombre</th>
<th>Edad</th>
<th>Ciudad</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ana García</td>
<td>28</td>
<td>Buenos Aires</td>
</tr>
<tr>
<td>Carlos López</td>
<td>35</td>
<td>Córdoba</td>
</tr>
<tr>
<td>María Rodríguez</td>
<td>22</td>
<td>Rosario</td>
</tr>
</tbody>
</table>
</body>
</html>
Separar estructura (HTML) de presentación (CSS) es una de las mejores prácticas más importantes del desarrollo web.
Mini-desafío: Ponelo a prueba
Creá un horario de clases semanal que contenga:
- Una fila de encabezado con los días: "Hora", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes" (6 columnas)
- Al menos 3 filas con diferentes materias
- Una celda que use
colspanpara una materia que ocupe dos días seguidos - Una celda que use
rowspanpara una actividad de 2 horas seguidas - Usá
<thead>y<tbody>
No copies y pegues de la Variante 2: adaptá el esquema a 6 columnas y creá tu propio horario.
Errores comunes con tablas HTML
| Error | Por qué es un problema |
|---|---|
No cerrar etiquetas <tr>, <td> o <th> | El navegador intenta adivinar la estructura y puede mostrar celdas desordenadas |
| Usar tablas para el layout de la página | Práctica obsoleta desde hace 15 años. Para layouts usá CSS Grid o Flexbox. Las tablas son solo para datos tabulares |
No usar <th> para encabezados | Los lectores de pantalla no pueden asociar celdas de datos con sus encabezados. <th> + atributo scope es obligatorio para accesibilidad |
Usar border="1" en lugar de CSS | El atributo border está obsoleto en HTML5. Usá border-collapse: collapse y border en CSS |
Olvidar <tbody> | Aunque el navegador lo agrega automáticamente, sin <tbody> no podés estilizar el cuerpo de la tabla por separado ni aplicar scroll en tablas largas |
Preguntas frecuentes
¿Las tablas son malas para SEO?
No. Las tablas bien usadas (para datos tabulares) son perfectamente válidas para SEO. Google las interpreta como datos estructurados y puede mostrar fragmentos enriquecidos si los datos son relevantes. Lo que es malo para SEO es usar tablas para el layout de la página, porque confunde a los crawlers sobre la estructura real del contenido.
¿Cuándo usar tablas vs CSS Grid?
Usá tablas HTML cuando tengas datos con relaciones fila-columna (precios, horarios, rankings, reportes numéricos). Usá CSS Grid para la maquetación visual de la página (header, sidebar, footer, galerías). La regla es simple: si exportarías el contenido a Excel, va en una tabla. Si es diseño visual, va en Grid.
¿Ya dominás las tablas? Generá una página con datos tabulares usando DivZone AI y analizá cómo se estructuran las tablas con thead, tbody y tfoot en un proyecto real. ¡Ver código generado es la mejor forma de aprender!
🔎 Revisa las siguientes secciones con más información sobre este tema:
- Elementos fundamentales en HTML
- Más sobre tablas: MDN - El elemento Table