Saltar al contenido principal
Codigo Heroe
Tarea anterior
Distribuciones complejas de componentes4/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

La dirección del eje principal

La lista está lista. Pasemos a los estilos de distribución de cada tarjeta.

Diseño de las tarjetas

Fíjate en el orden de los elementos dentro de las tarjetas. En el diseño, primero está la imagen y después el encabezado. En el HTML ocurre al revés:

<li class="card current">
  <h3 class="title">Lima</h3>
  <img class="image" src="img/lime.jpg" alt="Lima">
  <p class="description">Un toque ácido y un aroma único.</p>
  <a class="add-link" href="#">+ Agregar</a>
</li>

Conviene conservar el orden del HTML: por su significado, el encabezado de la sección debe aparecer antes que el contenido al que se refiere. ¿Qué hacemos entonces? ¡Cambiamos el orden visual de los elementos!

La propiedad order permite controlar el orden visual de los elementos. Funciona en contenedores grid y flex, pero nuestras tarjetas son elementos <li> de tipo bloque. Para usar order, tendremos que cambiar el tipo de caja de las tarjetas. Tanto grid como flexbox sirven para esta distribución; en este ejercicio usaremos flexbox.

Si simplemente convertimos las tarjetas en contenedores flex, los elementos se colocarán en una fila y la distribución se romperá. Para conservar el flujo de arriba hacia abajo, tendremos que girar el eje principal del contenedor flex.

Esquema de los ejes de flexbox

La propiedad flex-direction controla la dirección del eje principal. Su valor predeterminado es row (fila), pero podemos cambiarlo a column (columna):

.card {
  display: flex;
  flex-direction: column;
}

En ese caso, el eje principal irá de arriba hacia abajo y el transversal, de izquierda a derecha. Así, los elementos flex de las tarjetas se colocarán de arriba hacia abajo.

Esquema de los ejes girados de flexbox

Queremos intercambiar la imagen y el encabezado de cada tarjeta sin cambiar el HTML. Primero convertiremos las tarjetas en contenedores flex y giraremos el eje principal. En el siguiente ejercicio cambiaremos el orden visual de los elementos.

  • index.html
  • style.css
HTML
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="carousel-decorative.css"> <link rel="stylesheet" href="style.css"> <title>Crea tu smoothie</title> </head> <body> <section class="carousel"> <h2>Crea tu smoothie</h2> <button class="arrow arrow-back" type="button"><span class="visually-hidden">Anterior</span></button> <ul class="cards-list"> <li class="card"> <h3 class="title">Mandarina</h3> <img class="image" src="img/mandarin.jpg" alt="Mandarina" width="120" height="120"> <p class="description">Sabor dulce e intenso con un toque ácido.</p> <a class="add-link" href="#">+ Agregar</a> </li> <li class="card current"> <h3 class="title">Lima</h3> <img class="image" src="img/lime.jpg" alt="Lima" width="150" height="150"> <p class="description">Un toque ácido y un aroma único.</p> <a class="add-link" href="#">+ Agregar</a> </li> <li class="card"> <h3 class="title">Fresa</h3> <img class="image" src="img/strawberry.jpg" alt="Fresa" width="120" height="120"> <p class="description">Suave aroma floral y sabor a verano.</p> <a class="add-link" href="#">+ Agregar</a> </li> </ul> <button class="arrow arrow-forward" type="button"><span class="visually-hidden">Siguiente</span></button> </section> </body> </html>
CSS
.cards-list { display: flex; align-items: center; margin: 0; padding: 0; } .card { width: 120px; margin-right: 10px; padding: 15px; } .card:nth-child(3) { margin-right: 0; } .current { width: 150px; }

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. Convierte las tarjetas con la clase card en contenedores flex. La distribución se romperá.
    2. Agrega flex-direction con el valor column a las tarjetas. Sus elementos se colocarán de arriba hacia abajo.
    Codigo Heroe

    © 2023-2026, codigoheroe.com