📄 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;
}