Ejercicio: Posicionamiento y capas
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.
<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>
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.
*, *::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?