1 · Tarjetas de perfil «clippath»
Objetivo: practicar clip-path
, Grid y variables CSS.
- Crea
perfiles.html
. - Maqueta tres tarjetas de usuario contenidas en un
section
con Grid responsivo. - Cada tarjeta debe mostrar foto, nombre, rol y botón “Seguir”.
- Redondea la foto usando
clip-path: circle()
y permite cambiar su tamaño con CSS variables. - Al pasar el ratón, el borde de la tarjeta debe animar su grosor.
2 · Tabla de gastos con filtros
Objetivo: thead/tbody/tfoot
, atributos data-*
y pseudoclases avanzadas.
- Crea
gastos.html
con una tabla de 12‑15 registros (fecha, categoría, importe). - Añade un pie de tabla que calcule total mensual (puede ir hard‑coded).
- Implementa un menú de filtros (radio buttons): “Todos”, “Alimentación”, “Ocio”… sin JS.
- Cuando se active un filtro, deben mostrarse solo las filas coincidentes; las demás se ocultan con CSS.
- Resalta las filas de importe > 100 € usando
:has()
o:is()
combinado con atributos.
3 · Formulario de reseña con estrellas
Objetivo: inputs tipo radio ocultos, accesibilidad y validación propia HTML5.
- Crea
resena.html
con un formulario que recoja nombre, correo, comentario y puntuación 1‑5. - Dibuja las estrellas con SVG embebido o icon font; deben cambiar color cuando se seleccionan.
- Asegúrate de que el grupo de radios sea accesible por teclado y con lector de pantalla.
- Muestra un contador en vivo de caracteres restantes para el comentario (máx. 200) usando JS ligero.
- El botón “Enviar” debe desactivarse hasta que todos los campos sean válidos.
4 · Slider de testimonios automático
Objetivo: Flexbox, scroll-snap
y JS para navegación.
- Crea
slider.html
con un contenedor horizontal de mínimo 4 testimonios. - Usa
scroll-snap-type: x mandatory;
para que cada tarjeta se alinee al soltar. - Añade flechas “prev/next” y puntos indicadores mediante JS sencillo.
- Activa autoplay que avance cada 6 s y se pause con
mouseenter
. - Asegúrate de que el slider funcione igual con teclado (flechitas) y que los indicadores tengan
aria-live
.
5 · Conmutador de temas con CSS Custom Properties
Objetivo: Variables, prefers-contrast
y persistencia.
- Crea
temas.html
con un interruptor (checkbox o botón) “Tema alto contraste”. - Define al menos dos esquemas de color mediante variables (normal y alto‑contraste).
- Si el sistema reporta
prefers-contrast: more
, elige automáticamente el modo alto, salvo que el usuario seleccione otro. - Guarda la preferencia en
localStorage
y reaplica al recargar. - Añade animación suave al cambiar tema (colores y fondo).
6 · Cronómetro con progresión circular
Objetivo: Canvas o SVG, APIs de tiempo y accesibilidad.
- Crea
cronometro.html
que muestre un círculo que se llena a medida que avanza el tiempo. - Implementa botones Start, Pause y Reset.
- El tiempo total debe ser configurable (por ejemplo 2 min).
- Actualiza el título de la pestaña (
document.title
) con la cuenta atrás restante. - Anuncia los últimos 10 segundos mediante
aria-live
para usuarios con lector de pantalla.
7 · “Drag & Drop” de tareas Kanban
Objetivo: API HTML Drag & Drop, Flexbox y aria-grabbed
.
- Crea
kanban.html
con tres columnas: “Pendiente”, “En progreso”, “Hecho”. - Las tarjetas de tarea deben poder arrastrarse entre columnas y reordenarse.
- Marca con
aria-grabbed="true/false"
y roles adecuados durante el arrastre. - Guarda el estado en
localStorage
para persistir al recargar. - Implementa un botón que exporte el tablero como JSON.
8 · Página 404 interactiva con parallax
Objetivo: Animación de capas, pseudo‑elementos y @media (prefers-reduced-motion)
.
- Crea
404-parallax.html
con título grande “404”. - Detrás del título, coloca al menos tres capas (
div
, SVG o img) que se muevan a distinta velocidad cuando el ratón se mueva. - Desactiva la animación si se detecta
prefers-reduced-motion: reduce
. - Añade un botón “Volver al inicio” que obtenga el foco automáticamente al cargar.
- Valida que el contraste del texto y el foco sean AA o mejor.
🔍 Cómo usarlos
- Elige uno, lee los requisitos y aborda primero la parte semántica.
- Valida con el W3C y Lighthouse; corrige accesibilidad y performance.
- Versiona tu progreso en Git y documenta qué aprendiste en cada commit.
