Ilustración del tutorial de Grid en CSS

CSS Grid: cómo crear una cuadrícula responsive de tarjetas

CSS Grid permite organizar contenido en filas y columnas. Es una buena opción para una galería, un listado de productos o una sección de tarjetas cuyas columnas deban mantener una estructura común.

Para empezar, añade display: grid al contenedor y define sus columnas con grid-template-columns. Sus hijos directos ocuparán las celdas según las reglas de colocación.

Ejemplo de tres columnas con CSS Grid

<div class="catalogo">
  <article>Diseño web</article>
  <article>Branding</article>
  <article>Optimización</article>
  <article>Mantenimiento</article>
</div>
<style>
  .catalogo {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 24px;
  }
  .catalogo article {
    min-width: 0;
    padding: 24px;
    background: #eef6ff;
    border-radius: 12px;
    overflow-wrap: anywhere;
  }
</style>

repeat(3, ...) repite tres columnas. 1fr representa una fracción del espacio disponible para esas pistas. El mínimo cero evita que el mínimo intrínseco de una columna la obligue a ser más ancha de lo esperado; también debes revisar el contenido que pueda desbordar.

Cómo hacer la cuadrícula responsive sin media queries

Sustituye la definición de columnas del ejemplo por esta:

.catalogo {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr));
  gap: 24px;
}

auto-fit crea las columnas que caben y colapsa las pistas repetidas que quedan vacías. minmax establece un mínimo y un máximo; min(100%, 240px) evita imponer 240 píxeles cuando el contenedor es aún más estrecho.

Esta solución adapta el número de columnas al contenedor, no a una lista de modelos de teléfono.

Auto-fit y auto-fill: diferencia práctica

Ambos calculan cuántas pistas repetidas pueden caber. Si hay menos elementos que columnas posibles, auto-fit colapsa las pistas vacías y permite que las ocupadas aprovechen más espacio. auto-fill conserva las pistas vacías.

Prueba con solo dos tarjetas en un contenedor ancho para ver la diferencia. No elijas uno por costumbre: decide si quieres que los pocos elementos se expandan.

Cómo hacer que una tarjeta ocupe dos columnas

@media (min-width: 48rem) {
  .destacada { grid-column: span 2; }
}

La regla necesita una cuadrícula que disponga de suficientes columnas en ese ancho. Aplicar un span mayor que el número previsto puede crear pistas implícitas y alterar la distribución. Para este patrón suele ser más sencillo definir explícitamente las columnas en cada tramo.

Grid o Flexbox: cuál conviene

Utiliza Grid cuando las relaciones entre filas y columnas sean importantes. Para una barra de herramientas o una distribución en una sola dirección, Flexbox puede ser más directo. No es necesario elegir una única herramienta para toda la web.

Errores habituales

  • Usar una altura fija en tarjetas con textos de distinta longitud.
  • Cambiar el orden visual y dejar un recorrido de teclado confuso.
  • Sumar anchos en porcentaje y separaciones que superan el contenedor.
  • Crear demasiadas columnas en móvil para mantener el diseño de escritorio.

Preguntas frecuentes

¿Necesito una librería?

No. Grid es parte de CSS y el ejemplo no requiere dependencias.

¿Por qué mi cuadrícula no se adapta al móvil?

Revisa los mínimos de las columnas, los anchos de sus hijos y la etiqueta viewport del documento.

Practica cambiando el número de tarjetas y el ancho del contenedor. Puedes comparar este enfoque con los frameworks de CSS o continuar en Aprender CSS.

Referencia técnica: documentación de MDN.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

logo mastercode pro
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Puedes ver mas detalle en nuestra pagina de privcidad