Curso gratuito de Animaciones 3D en la Web
Cursos Ceslava Lección: ScrollTrigger en GSAP
DEMO / 04

ScrollTrigger

Scroll Animations
scroll-trigger.js
// Registrar ScrollTrigger
gsap.registerPlugin(ScrollTrigger);

// ── Reveal con stagger ──
gsap.from('.card', {
  opacity: 0,
  y: 50,
  duration: 0.8,
  stagger: 0.12,
  ease: 'expo.out',
  scrollTrigger: {
    trigger: '.cards',
    start: 'top 80%',
    // play / pause / resume / reset
    toggleActions:
      'play none none reverse'
  }
});

// ── Counter animado ──
const obj = { val: 0 };
gsap.to(obj, {
  val: 98,
  snap: { val: 1 },
  onUpdate() {
    el.textContent = obj.val + '%';
  },
  scrollTrigger: {
    trigger: el,
    start: 'top 75%'
  }
});

// ── Scrub: valor ligado al scroll ──
gsap.to('.panel', {
  xPercent: -100,
  ease: 'none',
  scrollTrigger: {
    trigger: '.pinned',
    pin: true,
    scrub: 1,  // lag en segundos
    end: '+=2000'
  }
});

toggleActions — 4 estados:
onEnter · onLeave · onEnterBack · onLeaveBack

scrub: 1 — el tween sigue al
scroll con 1s de lag para suavidad.

pin: true — fija el elemento
mientras el scroll avanza dentro de él.

01 / Stagger reveal
Cards
animadas
Performance
GSAP usa GPU compositing automáticamente para máximo rendimiento.
🎯
Precisión
Control de cada keyframe con timelines anidadas y overlap.
🔁
Loop
repeat: -1 para loops, yoyo: true para ir y volver.
📐
Easing
Más de 30 easings + CustomEase para curvas propias.
02 / Horizontal stagger
Desde
los lados
A
translateX desde derecha
B
stagger 0.1s
C
expo.out ease
D
ScrollTrigger
E
onEnterBack
03 / Animated counters
Números
en scroll
0%
Satisfacción
0
Proyectos
0k
Usuarios
Cobertura
04 / Pinned con scrub
01
ScrollTrigger.create()
Define trigger, start, end y callbacks de cada zona de scroll.
02
pin: true
Fija el elemento en pantalla mientras el scroll continúa dentro.
03
scrub: 1.5
La animación sigue al scroll con 1.5s de lag suavizador.
04
onUpdate callback
Accede al progreso (0-1) en cada frame para reaccionar al scroll.