Saltar al contenido

📑 Tanda 6 – Solo enunciados de ejercicios (nivel medio)


1 · Navbar fluida con “scroll hide”

Objetivo: Grid, clamp() y JS ligero.

  1. Crea navbar.html.
  2. Diseña una barra de navegación con logo, enlaces y botón hamburguesa; el alto debe calcularse con clamp().
  3. Ocúltala al hacer scroll hacia abajo y muéstrala al volver a subir (JS con scrollY).
  4. Debe funcionar sin JS si se desactiva: la barra permanece fija arriba.
  5. Añade transición suave y conserva el foco accesible en todos los controles.

2 · Galería de productos con “scroll‑snap” y miniaturas sincronizadas

Objetivo: scroll-snap, atributos aria-selected y eventos click.

  1. Crea galeria.html con un carrusel horizontal de imágenes grandes.
  2. Debajo, coloca miniaturas; al pulsar una miniatura, el carrusel debe desplazarse hasta la imagen correspondiente.
  3. Usa scroll-snap-align: center; para centrar cada imagen.
  4. Marca la miniatura activa con aria-selected="true".
  5. Implementa teclas ←/→ para avanzar sin ratón.

3 · Web Component “x‑alert” personalizable

Objetivo: Custom Elements, Shadow DOM y atributos observados.

  1. Crea x-alert.js que defina un elemento <x-alert> con estilo interno (Shadow DOM cerrado).
  2. Acepta atributos type="info|warning|error" y dismissable.
  3. Si dismissable, muestra un botón “×” que borre el elemento con animación.
  4. Expone un método .flash(ms) que lo muestre y oculte tras ms milisegundos.
  5. Usa el componente en alerts.html con tres ejemplos distintos.

4 · Visor CSV en tabla sortable

Objetivo: fetch, parseo de texto y ordenación de columnas.

  1. Crea csv‑viewer.html.
  2. El usuario debe poder elegir un fichero .csv local (input file).
  3. Muestra los datos en una tabla; la primera fila es encabezado.
  4. Al pulsar cualquier th, la tabla se ordena asc/desc, detectando números y fechas.
  5. Añade contador de filas visibles y barra de búsqueda que filtre por texto.

5 · PWA “notas rápidas”

Objetivo: manifest, Service Worker y IndexedDB.

  1. Crea notas/ con index.html, app.js, sw.jsmanifest.webmanifest.
  2. La app permite crear, editar y borrar notas cortas; almacena los datos en IndexedDB.
  3. Instálala como PWA (botón “Agregar a inicio”) y muestra iconos a 192 y 512 px.
  4. Implementa caché “offline first” para los recursos estáticos.
  5. Al volver online, sincroniza notas pendientes y muestra notificación.

6 · Tabla responsive que colapsa a “cards”

Objetivo: media queries, pseudo‑elementos y atributos data-label.

  1. Crea tabla-card.html con una tabla de pedidos (5‑7 filas).
  2. Por encima de 640 px se ve como tabla normal.
  3. Por debajo, cada fila debe mostrarse como “card” apilada; los títulos de columna se generan con ::before leyendo data-label.
  4. Mantén orden semántico para lectores de pantalla.
  5. Sombrea las filas impares con CSS variable que el usuario pueda cambiar.

7 · Pestañas ARIA solo con radio buttons

Objetivo: accesibilidad, :focus-visible y animación fade.

  1. Crea pestanas.html con 3 pestañas (Descripción, Especificaciones, Opiniones).
  2. Usa un grupo de radios ocultos y etiquetas label como disparadores.
  3. Cada panel debe tener role="tabpanel" y aria-labelledby.
  4. El panel activo se muestra con opacidad 1 y los demás se ocultan con opacity:0, transicionando .3 s.
  5. Asegura navegación con Tab y flechas ←/→.

8 · Imagen “lazy‑load” con IntersectionObserver y efecto blur + fade‑in

Objetivo: rendimiento y transición accesible.

  1. Crea lazy.html con 6 imágenes de alta resolución que se carguen sólo al entrar en viewport.
  2. Muestra primero una versión tiny (32 px) muy borrosa; reemplázala por la grande cuando cargue.
  3. Añade transición filter: blur(20px) → blur(0) y opacity en .5 s.
  4. Si JS está desactivado, las imágenes deben seguir cargando (fallback <img> normal).
  5. Registra en consola el porcentaje de imágenes cargadas.

📝 Consejos para resolver

  1. Analiza cada requisito y planifica el orden de construcción (HTML → CSS → JS).
  2. Usa commits frecuentes describiendo lo implementado.
  3. Testea en móvil y con herramientas de accesibilidad (lupa, contraste, lector de pantalla).
  4. Publica tu solución en un repo; si necesitas revisión, pásame el enlace y te doy feedback.
Etiquetas:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Tomas Gonzalez.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

¿Atascado con tu proyecto? Presupuesto GRATIS

X
error: Content is protected !!
Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad