Saltar al contenido
Curso de CSS
Todos los cursos

Ejercicio: La caja y el flujo del documento

  • ⏱ 30 minutos
  • 📶 Nivel: principiante

Objetivo

Construir una tarjeta de producto aplicando el modelo de caja: box-sizing, márgenes, relleno, bordes, display, overflow y proporciones.

La página de partida

Este es el HTML de tu página. No lo modifiques: escribe solo el CSS.

pagina.html
<div class="pagina">
  <header class="cabecera"><h1>Tienda de plantas</h1></header>
  <section class="tarjeta">
    <img class="foto" src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='400' height='300'%3E%3Crect width='400' height='300' fill='%234f46e5'/%3E%3C/svg%3E" alt="Imagen de ejemplo">
    <h2 class="titulo">Monstera</h2>
    <p class="texto">Una planta de interior fácil de cuidar, con hojas grandes y muy decorativas.</p>
    <span class="etiqueta">Interior</span>
    <span class="etiqueta">Fácil</span>
    <a class="boton" href="#">Comprar</a>
  </section>
</div>
✏️ Prueba tu CSS aquí (opcional)

Pasos

Marca cada paso a medida que lo completes. Tu avance se guarda en este navegador.

💡 Pista 1: la foto sale deformada

Con width: 100% y aspect-ratio: 16 / 9, añade object-fit: cover para que se recorte en lugar de estirarse. Si tiene un height fijo, quítalo.

💡 Pista 2: `padding` en la etiqueta no hace nada vertical

Un span es inline y el relleno vertical no empuja a las líneas vecinas. Con display: inline-block ya se comporta como esperas.

🔎 Comprueba tu trabajo

Pega tu código y pulsa Comprobar. La revisión ocurre en tu navegador; nada se envía a ningún sitio. Cada punto en rojo incluye una pista.

    ✅ Ver una solución de ejemplo

    Intenta resolverlo antes de mirar. Tu versión puede ser distinta y también correcta.

    estilos.css
    *, *::before, *::after { box-sizing: border-box; }
    body { margin: 0; font-family: system-ui, sans-serif; }
    
    .pagina {
      max-width: 640px;
      margin: 0 auto;
      padding: 24px;
    }
    
    .tarjeta {
      border: 1px solid #dde2ef;
      border-radius: 16px;
      padding: 20px;
      overflow: hidden;
    }
    
    .foto {
      width: 100%;
      aspect-ratio: 16 / 9;
      object-fit: cover;
    }
    
    .titulo { margin: 16px 0 8px; }
    .texto  { margin: 0 0 16px; }
    
    .etiqueta {
      display: inline-block;
      padding: 2px 10px;
      border-radius: 999px;
      background: #eef2ff;
      margin-right: 6px;
    }
    
    .boton {
      display: inline-block;
      padding: 10px 20px;
      background: #4f46e5;
      color: #fff;
      border-radius: 10px;
      text-decoration: none;
    }

    💡 🏁 Reto extra (opcional)

    Haz que la tarjeta nunca supere 100% del ancho de la pantalla en un celular (prueba el modo dispositivo con F12) y que la imagen no se desborde.