Una galería de imágenes con CSS Grid que se reacomoda sola a cualquier ancho de pantalla, sin una sola media query, con miniaturas del mismo tamaño aunque las fotos originales no lo sean.
También te puede interesar
El código
<ul class="galeria"> <li><img src="https://decodigo.com/wp-content/uploads/2026/10/decodigo_placa_raspberry-pi-5.jpg" alt="Placa número 1" width="640" height="420"></li> <li><img src="https://decodigo.com/wp-content/uploads/2026/10/decodigo_placa_raspberry-pi-zero-2-w.jpg" alt="Placa número 2" width="640" height="420"></li> <li><img src="https://decodigo.com/wp-content/uploads/2026/10/decodigo_placa_raspberry-pi-5.jpg" alt="Placa número 3" width="640" height="420"></li> <li><img src="https://decodigo.com/wp-content/uploads/2026/10/decodigo_placa_raspberry-pi-zero-2-w.jpg" alt="Placa número 4" width="640" height="420"></li> <li><img src="https://decodigo.com/wp-content/uploads/2026/10/decodigo_placa_raspberry-pi-5.jpg" alt="Placa número 5" width="640" height="420"></li> <li><img src="https://decodigo.com/wp-content/uploads/2026/10/decodigo_placa_raspberry-pi-zero-2-w.jpg" alt="Placa número 6" width="640" height="420"></li> </ul>
.galeria {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
gap: 10px;
padding: 0;
list-style: none;
}
.galeria img {
display: block;
width: 100%;
height: auto;
aspect-ratio: 1;
object-fit: cover;
border-radius: 8px;
}En un marco de 720 píxeles salen 3 columnas y cada miniatura es cuadrada (comprobado en los tres navegadores), aunque las fotos miden 640 × 420. Ábrelo en el editor y cambia el ancho: las columnas se reacomodan.
Cómo funciona
repeat(auto-fill, minmax(180px, 1fr))crea tantas columnas como quepan de al menos 180 píxeles, y reparte el sobrante entre ellas.aspect-ratio: 1hace la imagen cuadrada, yobject-fit: coverla recorta para llenar el cuadro sin deformarla, como una miniatura de Instagram. Concontainse vería entera, con franjas vacías.- La galería es una lista (
ul): un lector de pantalla anuncia «lista de 6 elementos», que ya es información útil. Cada imagen lleva sualt.
auto-fill o auto-fit
<p>auto-fill</p> <div class="g fill"><div>1</div><div>2</div></div> <p>auto-fit</p> <div class="g fit"><div>1</div><div>2</div></div>
body { font-family: system-ui, sans-serif; }
.g { display: grid; gap: 8px; margin-bottom: 12px; }
.fill { grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); }
.fit { grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); }
.g div { padding: 16px; background: #1e64af; color: white; border-radius: 6px; }Solo se nota cuando hay menos elementos que columnas. auto-fill deja creadas las columnas vacías, así que los dos elementos conservan su tamaño de miniatura; auto-fit las colapsa, y los dos se estiran hasta llenar el ancho. Para una galería, auto-fill suele quedar mejor; para una fila de tarjetas que debe llenar el espacio, auto-fit.
Cada fragmento de HTML de esta página pasó por el Nu Html Checker 26.11.4 (el validador del W3C) y cada resultado se pintó y se midió en Chromium, Firefox y WebKit antes de publicarla. Prueba tus cambios en el editor de HTML y CSS o aprende desde cero con el curso.