Maquetación Web Dinámica / Pseudo-clases y pseudo-elementos: el arsenal secreto
Reto: dibuja un logo solo con CSS
Reto50 min60 XP
El examen de dibujo: un corazón — la figura clásica del arte CSS — usando UN div y sus dos fantasmas. Suena imposible hasta que lo descompones en primitivas; entonces es papiroflexia pura. Este reto entrena la habilidad madre del módulo: VER figuras como composiciones de cajas.
Reto
El corazón de CodeForge: un logo con un div
Media45 min60 XP(×2 sin mirar la solución)
Qué debes construir
Este corazón, con EXACTAMENTE un div en el HTML:
<div class="corazon" role="img" aria-label="Corazón violeta"></div>body { display: grid; place-items: center; min-height: 220px; background: #f8fafc; }
.corazon { position: relative; width: 80px; height: 72px; }
.corazon::before, .corazon::after {
content: "";
position: absolute;
top: 0;
width: 40px;
height: 64px;
background: #6d28d9;
border-radius: 40px 40px 0 0;
}
.corazon::before { left: 40px; transform: rotate(45deg); transform-origin: 0 100%; }
.corazon::after { left: 0; transform: rotate(-45deg); transform-origin: 100% 100%; }Requisitos:
- HTML: un solo div (con
role="img"yaria-label— un dibujo decorativo también se presenta a los lectores de pantalla). - Las dos mitades son
::beforey::after: rectángulos con las DOS esquinas superiores redondeadas (el "dedo" de la forma). - Cada mitad rota ±45° sobre el punto de encuentro (transform-origin — la lección de pivote llega formalmente en el módulo 10; aquí la descubres en la práctica).
- Bonus 1:
:hovercontransform: scale(1.1)en el div (y su transición suave, con prefers-reduced-motion). - Bonus 2: cuando lo tengas, versión alternativa con
clip-patho box-shadow múltiple — compara los enfoques.
Reglas
- Cero imágenes, cero SVG, cero caracteres (nada de content: "❤").
- Solo el div y sus dos pseudo-elementos.
- Colores de la casa: violeta
#6d28d9sobre fondo claro.
45:00
Cuando estés listo, arranca el reloj.
Qué sigue
Dibujaste con dos fantasmas. El gran final del módulo une TODO el arsenal — :checked, :has(), ::before, contadores — en la prueba definitiva de CSS moderno: un checklist interactivo completo, con progreso y celebración, sin una sola línea de JavaScript.