RobertoSEO
>
Blog
>
Web
>
Cómo hacer una Tabla HTML Responsive (con HTML y CSS) y sin plugins

Cómo hacer una Tabla HTML Responsive (con HTML y CSS) y sin plugins

Logra una tabla responsiva con todas las pantallas con un poco de HTML y CSS. Compatible con cualquier sitio, incluidos Wordpress, Divi, Elementor o cualquiera que sea tu CMS, tema o constructor. Fácil y explicado, ¡espero que te sirva!

22 de octubre de 2023 - Roberto Montaner Lledó
tabla responsive html resumen

[et_pb_section fb_built=»1″ admin_label=»section» _builder_version=»4.16″ global_colors_info=»{}»][et_pb_row _builder_version=»4.23″ _module_preset=»default» width=»100%» global_colors_info=»{}»][et_pb_column type=»4_4″ _builder_version=»4.23″ _module_preset=»default» global_colors_info=»{}»][et_pb_text _builder_version=»4.23″ _module_preset=»default» header_3_text_align=»center» global_colors_info=»{}»]

Consigue una tabla para tu sitio (WordPress y Divi inclusive)

En este artículo te voy a enseñar cómo hacer una tabla responsive que funciona muy bien, en cualquier sitio, incluidos WordPress, Divi, Elemento o cualquier otro tema o constructor.

Solo vas a necesitar un lugar donde poner la tabla con HTML y algún modo para integrarle código CSS a la página que se va a mostrar, o almenos al elemento, y si esto no es posible, incluirlo en el CSS de todo el sitio. Es muy sencillo y estoy seguro que serás capaz de integrarlo. En cualquier caso, si tienes problemas, me puedes contactar sin ningún problema.

[/et_pb_text][/et_pb_column][/et_pb_row][et_pb_row _builder_version=»4.23″ _module_preset=»default» width=»100%» global_colors_info=»{}»][et_pb_column type=»4_4″ _builder_version=»4.23″ _module_preset=»default» global_colors_info=»{}»][et_pb_text _builder_version=»4.23″ _module_preset=»default» header_3_text_align=»center» global_colors_info=»{}»]

Demostración: Así se verá tu tabla

Te lo muestro usando el mismo código que te comparto y explico, así como capturas de pantalla para que veas su vista en móvil y escritorio.

[/et_pb_text][/et_pb_column][/et_pb_row][et_pb_row _builder_version=»4.23″ _module_preset=»default» width=»100%» global_colors_info=»{}»][et_pb_column type=»4_4″ _builder_version=»4.23″ _module_preset=»default» global_colors_info=»{}»][et_pb_text _builder_version=»4.23″ _module_preset=»default» header_3_text_align=»center» global_colors_info=»{}»]

Ejemplo de tabla responsive hecha con código

[/et_pb_text][et_pb_code _builder_version=»4.23″ _module_preset=»default» custom_css_free_form=».responsive-table {|| width: 100%;|| overflow-x: auto;||}||||.responsive-table th,||.responsive-table td {|| padding: 8px;|| text-align: left;|| border-top: 1px solid #ddd;||}||||.responsive-table th {|| background-color: #ffedd7;||}||||.responsive-table tbody tr:nth-child(even) {|| background-color: #ffedd7;||}||||@media (max-width: 767px) {|| .responsive-table thead {|| display: none; /* Oculta los encabezados en dispositivos móviles */|| }|||| .responsive-table tr {|| margin-bottom: 0.625em;|| display: block;|| border-bottom: 2px solid #ddd;|| }|||| .responsive-table td {|| display: block;|| text-align: right;|| position: relative;|| padding-left: 50%;|| }|||| .responsive-table td::before {|| content: attr(data-label);|| position: absolute;|| left: 0;|| width: 50%;|| padding-left: 15px;|| font-weight: bold;|| text-align: left;|| }||}» global_colors_info=»{}»]

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

Tipo Precio Medidas Metros Metros
S 40€ 1,50 X 1,50 M 2,25 5,70
S 40€ 1,50 X 1,50 M 2,25 5,70
S 40€ 1,50 X 1,50 M 2,25 5,70

[/et_pb_code][/et_pb_column][/et_pb_row][et_pb_row column_structure=»1_2,1_2″ _builder_version=»4.23″ _module_preset=»default» width=»100%» global_colors_info=»{}»][et_pb_column type=»1_2″ _builder_version=»4.23″ _module_preset=»default» global_colors_info=»{}»][et_pb_text _builder_version=»4.23″ _module_preset=»default» header_3_text_align=»center» global_colors_info=»{}»]

Captura de pantalla de cómo se ve en Escritorio

[/et_pb_text][et_pb_image src=»https://nueva.robertoseo.com/wp-content/uploads/2023/10/tabla-escritorio.jpg» alt=»tabla escritorio adaptable a telefono» title_text=»tabla escritorio» align=»center» _builder_version=»4.23″ _module_preset=»default» global_colors_info=»{}»][/et_pb_image][/et_pb_column][et_pb_column type=»1_2″ _builder_version=»4.23″ _module_preset=»default» global_colors_info=»{}»][et_pb_text _builder_version=»4.23″ _module_preset=»default» header_3_text_align=»center» custom_margin=»||0px|||» global_colors_info=»{}»]

Captura de pantalla de su vista en Móvil

[/et_pb_text][et_pb_image src=»https://nueva.robertoseo.com/wp-content/uploads/2023/10/tabla-responsive-movil.jpg» alt=»tabla responsive movil» title_text=»tabla responsive movil» align=»center» _builder_version=»4.23″ _module_preset=»default» global_colors_info=»{}»][/et_pb_image][/et_pb_column][/et_pb_row][et_pb_row admin_label=»row» _builder_version=»4.23″ background_size=»initial» background_position=»top_left» background_repeat=»repeat» width=»100%» global_colors_info=»{}»][et_pb_column type=»4_4″ _builder_version=»4.16″ custom_padding=»|||» global_colors_info=»{}» custom_padding__hover=»|||»][et_pb_text _builder_version=»4.23″ _module_preset=»default» global_colors_info=»{}»]

Código HTML de la Tabla Responsive que se adaptará a móviles

<table class=«responsive-table»>

<thead>
<tr>
     <th>Tipo</th>
     <th>Precio</th>
     <th>Medidas</th>
     <th>Metros</th>
     <th>Metros</th>
</tr>
</thead>

<tbody>
<tr>
     <td data-label=«Tipo»><strong>S</strong></td>
     <td data-label=«Precio»>40€</td>
     <td data-label=«Medidas»>1,50 X 1,50 M</td>
     <td data-label=«Metros»>2,25</td>
     <td data-label=«Metros»>5,70</td>
</tr>

<tr>
     <td data-label=«Tipo»><strong>S</strong></td>
     <td data-label=«Precio»>40€</td>
     <td data-label=«Medidas»>1,50 X 1,50 M</td>
     <td data-label=«Metros»>2,25</td>
     <td data-label=«Metros»>5,70</td>
</tr>

<tr>
     <td data-label=«Tipo»><strong>S</strong></td>
     <td data-label=«Precio»>40€</td>
     <td data-label=«Medidas»>1,50 X 1,50 M</td>
     <td data-label=«Metros»>2,25</td>
     <td data-label=«Metros»>5,70</td>
</tr>

<!– Resto de las filas –>
</tbody>

</table>

Explicación del código HTML de la Tabla Responsiva

Este código tiene diversas partes, las cuales te voy a explicar a continuación:

  • <table> con una clase, la cual la asociará al código CSS.
  • Dentro de <thead> Se incluyen todos los encabezados de la tabla. Necesita dentro tan solo un <tr>, que sirve para indicar que ahí va una fila, y varios <th>, cada uno de los cuales son los encabezados de la tabla.
  • <tbody> Es el cuerpo de la tabla, asociado a los encabezados anteriores. Tiene dentro diferentes elementos.
    • <tr> (igual a lo explicado en thead, cada fila), y dentro de cada tr tenemos:
      • <td>, cada columna en esa fila, que irá asociada a cada encabezado en su mismo orden. Dentro de cada dato hay un data-label=»…», es la etiqueta que mostrará en ese dato cuando la tabla se adapte al teléfono.

[/et_pb_text][et_pb_text _builder_version=»4.23″ _module_preset=»default» global_colors_info=»{}»]

Código CSS que convertirán la Tabla anterior a amigable con los teléfonos

Bastará con copiar el código, pero yo te lo explico aquí abajo, por si tienes ganas de aprender cómo funciona y volverte mejor desarrollador.

.responsive-table {
      width: 100%;
      overflow-x: auto;
}

.responsive-table th, .responsive-table td {
      padding: 8px;
      text-align: left;
      border-top: 1px solid #ddd;
}

.responsive-table th {
      background-color: #ffedd7;
}

.responsive-table tbody tr:nth-child(even) {
      background-color: #ffedd7;

}

 

@media (max-width: 767px) {
.responsive-table thead {
      display: none; /* Oculta los encabezados en dispositivos móviles */
}

.responsive-table tr {
      margin-bottom: 0.625em;
      display: block;
      border-bottom: 2px solid #ddd;
}

.responsive-table td {
     display: block;
     text-align: right;
     position: relative;
     padding-left: 50%;
}

.responsive-table td::before {
     content: attr(data-label);
     position: absolute;
     left: 0;
     width: 50%;
     padding-left: 15px;
     font-weight: bold;
     text-align: left;
}
}

Explicación del código CSS

Media Query

Se refiere a la parte que pone:

@media (max-width: 767px) { … }

Las Media Queries son una técnica en CSS que permite aplicar estilos solo cuando ciertas condiciones son verdaderas. En este caso, el estilo dentro de esta Media Query solo se aplicará si el ancho de la pantalla es de 767 píxeles o menos, lo que es típico para pantallas de teléfonos móviles.

Ocultar encabezados en el teléfono

Se refiere a esta parte:

.responsive-table thead { display: none; /* Ocultar encabezados */ }

Lo que hace es ocultar encabezados en teléfono para mostrar los data-label del HTML.

Modificando la forma de mostrar filas en móvil

Explicamos la parte:

.responsive-table tr { margin-bottom: 0.625rem; display: block; justify-content: center; }

Aquí, estamos cambiando la forma en que se muestran las filas (tr) de la tabla (en el teléfono, recordemos que está dentro del media query).
En lugar de mostrarse como filas, ahora se mostrarán como bloques individuales, uno debajo del otro, con un pequeño margen entre ellos.

Modificando la forma de mostrar columnas en el móvil

Explico las partes en concreto:

.responsive-table td: Hace que las celdas se muestren como bloques, alinea el texto a la derecha y posiciona la celda de manera relativa para permitir posicionamiento absoluto de contenido generado.

.responsive-table td::before: Este pseudo-elemento genera contenido basado en el valor del atributo data-label de la celda. Se posiciona absolutamente dentro de la celda y se muestra a la izquierda, actuando como una etiqueta para el contenido de la celda en dispositivos móviles.

Etiquetas en las celdas (móvil)

La importante parte que incluye:

.responsive-table td:before { position: absolute; top: 0; left: 0; width: 45%; padding-right: 10px; white-space: nowrap; content: attr(data-label); }

Este fragmento crea etiquetas para las celdas usando el atributo data-label de las celdas (td) en el teléfono. Estas etiquetas se mostrarán a la izquierda del contenido de la celda en pantallas pequeñas, lo que ayuda a entender qué representa cada dato en la tabla.

El resto de partes son elementos decorativos.

En resumen, este código CSS está reorganizando la tabla en pantallas pequeñas para que en lugar de tener filas y columnas, cada fila se muestre como un bloque separado, con etiquetas al lado de cada pieza de datos para clarificar qué es cada cosa. Esto hace que la tabla sea más legible y accesible en dispositivos móviles.

[/et_pb_text][/et_pb_column][/et_pb_row][/et_pb_section]

Autor

Roberto Montaner

Roberto Montaner Lledó

Soy un consultor SEO con más de 10 años de experiencia ayudando a empresas a posicionarse en los primeros resultados de Google. Me especializo en estrategias de SEO técnico, marketing de contenidos y optimización on-page, siempre con un enfoque en resultados medibles y sostenibles.