Saltar al contenido
Curso de CSS
Todos los cursos

Ejercicio: Posicionamiento y capas

  • ⏱ 35 minutos
  • 📶 Nivel: principiante

Objetivo

Posicionar una barra pegajosa, una insignia, un botón de cierre y un modal centrado sobre una capa que cubre la pantalla.

La página de partida

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

pagina.html
<header class="barra">
  <strong>Mi sitio</strong>
  <a href="#">Inicio</a>
</header>
<main class="contenido">
  <article class="producto">
    <span class="insignia">Nuevo</span>
    <div class="imagen"></div>
    <h2>Lámpara de mesa</h2>
    <button class="cerrar" aria-label="Cerrar">✕</button>
  </article>
  <p class="relleno">Contenido largo para poder desplazar la página. Contenido largo para poder desplazar la página.</p>
  <p class="relleno">Más contenido para poder desplazar la página. Más contenido para poder desplazar la página.</p>
</main>
<div class="fondo-modal"><div class="modal">Hola, soy un modal</div></div>
✏️ Prueba tu CSS aquí (opcional)

Pasos

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

💡 Pista 1: mi insignia no se queda en la tarjeta

Revisa que .producto tenga position: relative y que .insignia tenga position: absolute con top: 12px; right: 12px.

💡 Pista 2: el modal no cubre toda la pantalla

position: fixed; inset: 0; lo extiende a los cuatro bordes de la ventana. Si no ves cambios, comprueba que no haya otro valor de width/height limitando.

🔎 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; }
    
    .barra {
      position: sticky;
      top: 0;
      z-index: 10;
      background: #4f46e5;
      color: #fff;
      padding: 12px 16px;
    }
    .barra a { color: #fff; }
    
    .producto {
      position: relative;
      max-width: 280px;
      padding: 16px;
      border: 1px solid #dde2ef;
    }
    
    .insignia {
      position: absolute;
      top: 12px;
      right: 12px;
      background: #e11d48;
      color: #fff;
      padding: 2px 10px;
      border-radius: 999px;
    }
    
    .cerrar { position: absolute; top: 8px; left: 8px; }
    
    .fondo-modal {
      position: fixed;
      inset: 0;
      background: rgba(15, 18, 34, .6);
      z-index: 100;
      display: grid;
      place-items: center;
    }
    
    .modal {
      background: #fff;
      padding: 24px;
      border-radius: 16px;
    }

    💡 🏁 Reto extra (opcional)

    Añade un botón flotante position: fixed en la esquina inferior derecha. ¿Qué pasa si reduces la ventana? ¿Tapa contenido? ¿Cómo evitarlo?