Saltar al contenido principal
Codigo Heroe
Tarea anterior
Distribución de componentes12/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

Columnas con repeat y separación con gap

Vimos cómo se comporta la lista con dos o cuatro tarjetas por fila. Como quitamos el margen de cada tercera tarjeta, la tercera y la cuarta quedaron pegadas. Además, volvió a aparecer un espacio sobrante junto al borde derecho del contenedor.

Café: el largo viaje del cafeto a tu taza
Café: el largo viaje del cafeto a tu taza
Las mejores cafeteras para casa
Las mejores cafeteras para casa
Consejos de barista: ¿qué café elegir?
Consejos de barista: ¿qué café elegir?
Recetas para Año Nuevo
Recetas para Año Nuevo

No sabemos qué ancho tendrá la ventana de cada persona ni qué tarjeta quedará al final de una fila. Por eso no podemos usar :nth-child para quitarle el margen derecho. ¿Qué podemos hacer?

Una opción es usar la propiedad gap en flexbox. Así no importa cuál sea la última tarjeta de la fila.

Pero hay otra forma de distribuir las tarjetas: usar grid. En ese caso también podremos establecer la cantidad de columnas.

Escribiremos nuevos estilos para la lista de tarjetas, esta vez con grid y gap.

.grid-container {
  display: grid;
  gap: 10px;
}

Como al definir las columnas del contenedor grid indicamos su ancho, ya no hace falta dar un ancho a las propias tarjetas.

Diseño de la lista de tarjetas

Todas las columnas de la lista deben tener el mismo ancho. Para ello podemos usar la función repeat, cuyo nombre significa «repetir». Entre paréntesis se escriben la cantidad de columnas y su ancho, separados por una coma:

grid-template-columns: repeat(cantidad de columnas, ancho de la columna);
Este código divide el contenedor grid en cuatro columnas de 100px de ancho:
.grid-container {
  display: grid;
  grid-template-columns: repeat(4, 100px);
}

Eliminaremos todo el código de la distribución con flexbox. Después convertiremos la lista de tarjetas en un contenedor grid y separaremos las tarjetas con gap. Usaremos repeat para dividir la lista en columnas y probaremos distintos valores.

  • 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-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: 645px; margin: 15px; } .cards-list { /* Dejamos de usar la distribución con flexbox */ /* display: flex; */ /* justify-content: flex-start; */ /* flex-wrap: wrap; */ margin: 0; padding: 20px; } .card { /* Dejamos de usar la distribución con flexbox */ /* width: 110px; */ /* margin-right: 15px; */ /* margin-bottom: 15px; */ padding: 15px; } /* Dejamos de usar la distribución con flexbox */ /* .card:nth-child(3n) { margin-right: 0; } */

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. Elimina todo el código comentado.
    2. Convierte cards-list en un contenedor grid.
    3. Añade la propiedad grid-template-columns con el valor repeat(2, 295px).
    4. Establece un espacio de 15px entre las filas y las columnas. Fíjate en que no sobra espacio a la derecha.
    5. Cambia el valor de grid-template-columns para que las columnas tengan un ancho de 140px.
    6. Ahora cámbialo para que haya tres columnas.
    Codigo Heroe

    © 2023-2026, codigoheroe.com