Saltar al contenido principal
Codigo Heroe
Tarea anterior
Distribución de componentes14/17
A la lista de tareas
  1. 1. Columnas para un componente
  2. 2. Flexbox dentro de grid
  3. 3. Márgenes y relleno de los enlaces
  4. 4. Enlaces con cajas de bloque
  5. 5. Alineación vertical con align-items
  6. 6. Varias líneas con flex-wrap
  7. 7. Ancho y relleno de las tarjetas
  8. 8. Distribución con justify-content
  9. 9. Separación con margin
  10. 10. Márgenes y :nth-child
  11. 11. Pruebas con distintos anchos
  12. 12. Columnas con repeat y separación con gap
  13. 13. El valor auto-fit
  14. 14. La función minmax
  15. 15. La propiedad grid-column
  16. 16. La propiedad grid-row
  17. 17. La propiedad grid-auto-flow
Siguiente tarea
  • Matriz de skills
  • Cursos
  • Registro
  • Iniciar sesión

Loading…
En unos segundos, estará listo.

  • Teoría
  • Teoría

La función minmax

Ya logramos que la cantidad de columnas dependa del ancho de la página. Pero, si el espacio disponible no se puede repartir exactamente entre las columnas, queda mucho espacio libre a la derecha.

Podríamos ensanchar las columnas para ocuparlo. Sin embargo, un ancho fijo no resuelve el problema: si la página crece más, volverá a quedar espacio libre. Necesitamos que el ancho de las columnas cambie de forma dinámica según el espacio disponible.

Podemos conseguirlo con otra función: minmax. Se escribe dentro de repeat, en lugar del ancho fijo. Entre los paréntesis de minmax se indican el tamaño mínimo y el máximo de las columnas, separados por una coma:

repeat(auto-fit, minmax(tamaño mínimo, tamaño máximo));

El siguiente código permite que las columnas cambien de ancho según el espacio libre del contenedor. Su ancho no será menor de 100px ni mayor de 150px:

.grid-container {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(100px, 150px));
}

En minmax suele usarse la unidad fr para el valor máximo. Así las columnas pueden ensancharse hasta que haya suficiente espacio para una columna más.

minmax(100px, 1fr)
width: 200px;
width: 299px;
width: 300px;

Usaremos minmax para indicar el tamaño mínimo y el máximo de las columnas de la lista. Observaremos cómo se reorganiza al cambiar el ancho de la página. Después veremos qué sucede al añadir una tarjeta cuyo contenido es más ancho que una columna.

  • index.html
  • style.css
HTML
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="list-decorative.css"> <link rel="stylesheet" href="style.css"> <title>Lista de tarjetas</title> </head> <body> <ul class="cards-list"> <li class="card"> <img src="img/coffee-1.jpg" alt="Café: el largo viaje del cafeto a tu taza" width="110" height="110"> <h2>Café: el largo viaje del cafeto a tu taza</h2> </li> <li class="card"> <img src="img/coffee-2.jpg" alt="Las mejores cafeteras para casa" width="110" height="110"> <h2>Las mejores cafeteras para casa</h2> </li> <li class="card"> <img src="img/coffee-4.jpg" alt="Consejos de barista: ¿qué café elegir?" width="110" height="110"> <h2>Consejos de barista: ¿qué café elegir?</h2> </li> <li class="card"> <img src="img/coffee-5.jpg" alt="Recetas para Año Nuevo" width="110" height="110"> <h2>Recetas para Año Nuevo</h2> </li> <!-- <li class="card"> <img src="img/coffee-6.jpg" alt="20 cafeterías que vale la pena visitar" width="260" height="110"> <h2 class="accent">20 cafeterías que vale la pena visitar</h2> </li> --> <li class="card"> <img src="img/coffee-7.jpg" alt="Guía de métodos alternativos de preparación" width="110" height="110"> <h2>Guía de métodos alternativos de preparación</h2> </li> </ul> </body> </html>
CSS
body { width: 640px; margin: 15px; } .cards-list { display: grid; grid-template-columns: repeat(auto-fit, 140px); gap: 15px; margin: 0; padding: 20px; } .card { padding: 15px; }

El código ha cambiado, haz clic en "Actualizar" o activa la ejecución automática.

Ha ido a otra página

Haga clic dentro del mininavegador para poner el foco en esta ventana.

100%
ObjetivosRealizado
0
    1. Cambia el valor de grid-template-columns a repeat(auto-fit, minmax(140px, 1fr)). Las tarjetas de la primera fila se ensancharán para ocupar todo el espacio libre.
    2. Cambia el ancho de body a 645px. Las tarjetas se estrecharán y habrá cuatro columnas.
    3. En index.html, descomenta el código de las líneas 28-31. Se añadirá una tarjeta cuyo contenido sobresaldrá de la columna.
    Codigo Heroe

    © 2023-2026, codigoheroe.com