CodeForge

Maquetación Web Dinámica / GSAP y animación de nivel Awwwards

Micro-interacciones premium: botones magnéticos y más

Teoría20 min20 XP

Los efectos grandes impresionan; los pequeños ENAMORAN. Un botón que "persigue" tu cursor, un cursor personalizado que flota con retraso, una imagen que reacciona al pasar por encima: son detalles minúsculos que hacen que un sitio se sienta de otra liga. GSAP los hace fáciles gracias a su interpolación suave. Hoy sumas las micro-interacciones que distinguen a los sitios premiados.

El botón magnético

Mueve el cursor sobre el botón y siéntelo "seguirte", y sácalo para ver el rebote elástico al volver. Toda la magia está en dos cosas: mover una FRACCIÓN de la distancia (* 0.4) para que sea sutil, y el ease: "elastic.out" en el regreso. Nota el guard de reduced-motion: para quien lo pidió, el botón se queda quieto (es puro adorno de movimiento).

Cursor personalizado con retraso

Un cursor custom es un div que sigue al mouse — y el toque premium es que lo siga con un pequeño RETRASO, creando una estela suave:

cursor.js
const cursor = document.querySelector(".cursor");   // un div redondo, position: fixed

window.addEventListener("pointermove", (e) => {
// el 'duration' crea el retraso: el cursor "persigue" al mouse, no salta
gsap.to(cursor, { x: e.clientX, y: e.clientY, duration: 0.3, ease: "power2.out" });
});

// crece sobre elementos interactivos
document.querySelectorAll("a, button").forEach((el) => {
el.addEventListener("pointerenter", () => gsap.to(cursor, { scale: 2.5, duration: 0.3 }));
el.addEventListener("pointerleave", () => gsap.to(cursor, { scale: 1, duration: 0.3 }));
});

El duration: 0.3 es el truco: sin él, el div saltaría instantáneo a la posición del mouse (aburrido); con él, lo persigue con inercia — la estela suave de los sitios premium. Nota de accesibilidad: un cursor custom debe COMPLEMENTAR, no reemplazar, el cursor real de forma que rompa la usabilidad; y respeta reduced-motion.

Hover distorsionado: la nota honesta

El efecto de imágenes que se "derriten" o distorsionan al pasar el cursor —muy visto en Awwwards— es de otra categoría técnica: usa WebGL y shaders (programación de la GPU), normalmente con librerías como three.js o hover-effect/curtains.js. GSAP anima los PARÁMETROS de esos shaders, pero la distorsión en sí no es GSAP ni CSS. Nota honesta: queda fuera del alcance de este módulo (el 3D con shaders es el curso SC-13, "3D en la Web"). Sabe que existe, sabe que es WebGL, y no lo confundas con algo que resuelvas con un tween — es un mundo aparte que este curso te deja preparado para explorar.

En tu botón magnético, mueves el botón a la posición EXACTA del cursor (x: dx, y: dy) sin fracción. ¿Qué se siente mal?

Mini-reto

Añade a "El Observador" un botón magnético de "Suscríbete" (con su guard de reduced-motion) y experimenta con el factor: 0.2 (apenas coquetea), 0.5 (muy magnético), y con el ease del regreso (back.out vs elastic.out(1, 0.2)). Encuentra el punto donde se siente "vivo pero usable". Ese calibrado fino es exactamente el trabajo de un desarrollador de front-end premium.

Qué sigue

Última pieza antes del proyecto: unir GSAP con lo que dibujaste en el módulo 12. La próxima lección coreografía SVG con GSAP —logos que se ensamblan, trazos que se dibujan con control total, iconos que cobran vida—. El vector y el motor de animación, juntos.