Saltar al contenido principal
Codigo Heroe
Tarea anterior
Distribuciones complejas de componentes12/18
A la lista de tareas
  1. 1. Ancho y relleno de las tarjetas
  2. 2. Márgenes entre elementos flex
  3. 3. La propiedad align-items en flexbox
  4. 4. La dirección del eje principal
  5. 5. El orden visual con order
  6. 6. La propiedad align-self en flexbox
  7. 7. Márgenes y rellenos de los elementos flex
  8. 8. Prueba de una imagen más grande
  9. 9. Imágenes que se ajustan al contenedor
  10. 10. Una tarjeta con dos columnas
  11. 11. Una distribución asimétrica con tres columnas
  12. 12. Áreas de grid
  13. 13. Áreas que ocupan varias filas
  14. 14. Reglas de las áreas de grid
  15. 15. La propiedad align-self en grid
  16. 16. Ajustar el ancho de las columnas
  17. 17. La propiedad justify-self
  18. 18. Prueba de la tarjeta con más contenido
Siguiente tarea
  • Matriz de skills
  • Cursos
  • Registro
  • Iniciar sesión

Loading…
En unos segundos, estará listo.

  • Teoría
  • Teoría

Áreas de grid

Ya dividimos la tarjeta en tres columnas y extendimos el encabezado. Vamos bien, pero la distribución todavía no coincide con el diseño: la descripción quedó en la tercera columna, la más estrecha, y se divide en demasiadas líneas.

Plan «Charla sin fin» con un paquete adicional de SMS

El plan para quienes disfrutan conversar.

Llamadas ilimitadas.
Redes sociales ilimitadas.
Mensajería ilimitada.
600 SMS al día.
999₽
No constituye una oferta vinculante.

Para corregirlo, debemos cambiar el orden visual de los elementos. Ya conocemos order, pero en este caso es más cómodo describir toda la plantilla de la tarjeta con áreas de grid.

Un área de grid es una parte de la cuadrícula que puede tener un nombre. Quien desarrolla la página elige ese nombre. En nuestros ejemplos, los nombres empiezan con una letra y pueden incluir números, guiones y guiones bajos. Por ejemplo: header, section-2 o user_avatar. Conviene elegir nombres que describan el contenido del área.

Usaremos áreas de grid para colocar los elementos como en el diseño. Empecemos por el encabezado y el bloque del precio. Los nombres title y price les quedan bien.

Diseño de la tarjeta

Para describir la estructura del grid mediante áreas se usa grid-template-areas. Allí se escriben sus nombres: cada fila se encierra entre comillas y las columnas se separan con espacios. Para que un área ocupe varias columnas, repetimos su nombre las veces necesarias.

Queremos que el encabezado ocupe dos columnas y que el precio pase a la primera fila:

.card {
  display: grid;
  grid-template-columns: 260px 165px 75px;
  grid-template-areas: "title title price";
}

Pero describir la plantilla no basta: el navegador no sabe a qué elementos nos referimos. Para vincular un elemento grid con el nombre de un área usamos grid-area. ¡En grid-area no se necesitan comillas!

.title {
  grid-area: title;
}

.price {
  grid-area: price;
}

Este código vincula el encabezado con el área title y el bloque del precio con price. Ambos se colocarán según grid-template-areas, sin importar su orden en el HTML.

Describamos la primera fila con grid-template-areas y asignemos las áreas al encabezado y al precio. También comprobaremos que ya no hace falta extender el encabezado con grid-column.

El nombre del área no tiene que coincidir con el selector, pero debe describir el contenido del elemento:

h1 {
  grid-area: title;
}

Los elementos sin un área asignada se colocan en la cuadrícula de la forma habitual.

  • index.html
  • style.css
HTML
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="card-decorative.css"> <link rel="stylesheet" href="style.css"> <title>Plan</title> </head> <body> <article class="card"> <h2 class="title">Plan «Charla sin fin» con un paquete adicional de SMS</h2> <div class="description"> <p>El plan para quienes disfrutan conversar.</p> </div> <ul class="options-list"> <li class="options-item">Llamadas ilimitadas.</li> <li class="options-item">Redes sociales ilimitadas.</li> <li class="options-item">Mensajería ilimitada.</li> <li class="options-item">600 SMS al día.</li> </ul> <div class="price">999₽</div> <div class="disclaimer">No constituye una oferta vinculante.</div> </article> </body> </html>
CSS
.card { width: 540px; padding: 20px; display: grid; grid-template-columns: 260px 165px 75px; gap: 20px; } .title { grid-column: span 2; }

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. Agrega grid-template-areas con el valor "title title price" a la regla de card.
    2. Elimina grid-column de la regla de la clase title. El encabezado dejará de ocupar dos columnas.
    3. Agrega grid-area con el valor title a esa regla. El encabezado volverá a ocupar dos columnas.
    4. Crea una regla para price y agrega grid-area con el valor price. El precio pasará a la primera fila.
    Codigo Heroe

    © 2023-2026, codigoheroe.com