Ejercicio 9 – Maquetación Grid y Flexbox

📄 Objetivo

Maquetar una página web combinando lo mejor de ambos mundos: CSS Grid para definir la estructura general de la página (filas principales) y Flexbox para la alineación y distribución de los elementos internos (menú, cards, footer)[cite: 235, 402].

💻 Estructura base

La estructura general utiliza tres bloques principales dentro del body.


<body>
    <header> Logo y Menú </header>
    <main> 
        <div class="card">...</div>
        <div class="card">...</div> 
        <div class="card">...</div>
    </main>
    <footer> Textos separados </footer>
</body>
          

🎯 Requisitos CSS

  • La estructura general (Header, Main, Footer) debe definirse con Grid.
  • La página debe ocupar al menos el 100% de la altura de la pantalla (min-height: 100vh)[cite: 409].
  • Header: Usar Flexbox para separar el logo y la navegación[cite: 427].
  • Main: Usar Flexbox para centrar y alinear las cards[cite: 392].
  • Footer: Usar Flexbox para distribuir el contenido a los extremos.

✅ Solución (CSS)

A continuación se muestra el código CSS aplicado, donde se combinan las propiedades de Grid para el layout macro y Flexbox para los componentes micro, con los colores solicitados:


body {
    margin: 0;
    display: grid;
    grid-template-rows: auto 1fr auto;
    min-height: 100vh;
    font-family: sans-serif;
}

header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background-color: #c05c5c;
    padding: 1rem;
}

nav ul {
    display: flex;
    gap: 1rem;
    list-style: none;
    padding: 0;
    margin: 0;
}

main {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 20px;
    background-color: #21ce21;
    padding: 20px;
}

.card {
    background-color: rgb(19, 83, 202);
    padding: 20px;
    border: 1px solid #ffffff;
}

footer {
    display: flex;
    justify-content: space-between;
    background-color: #4747ce;
    padding: 1rem;
}
          
🔎 Ver resultado