Ir al contenido

locomotive-scroll

  • Grupo: Animación
  • Cuándo se activa: Smooth scroll con Locomotive Scroll
  • Se instala: Opcional: llega con un paquete de skills.

Documentación completa upstream (inglés): SKILL.upstream.md (480 líneas). No la leas entera: usa el mapa y lee solo la sección que necesites (Read con offset/limit o Grep).

  • Usar: landings inmersivas tipo Apple con scroll suavizado (lerp), capas parallax por velocidad y elementos sticky dentro de secciones.
  • Usar: scroll horizontal o storytelling largo que necesita progreso por elemento (data-scroll-id) o disparadores data-scroll-call.
  • NO usar: solo fade-in al entrar en viewport → scroll-reveal-libraries (AOS) o IntersectionObserver.
  • NO usar: animaciones scrubbed/pin sin smooth scroll → gsap-scrolltrigger (ScrollSmoother si se quiere suavizado); en React → motion-framer.
Tarea Lee solo
Empezar un proyecto/starter SKILL.upstream.md L33-116 (§Installation + §Core Concepts) + assets/starter_locomotive/
Parallax, sticky, scroll horizontal L139-161 (§2. Parallax), L193-209 (§4. Sticky), L236-254 (§6. Horizontal)
Eventos, progreso y scrollTo L163-191 (§3. Viewport Detection) + L211-234 (§5. Programmatic Scrolling) + L333-353 (§Instance Methods)
Combinar con GSAP ScrollTrigger L277-331 (§Integration with GSAP ScrollTrigger) + references/gsap_integration.md
Depurar / rendimiento L355-383 (§Performance Optimization) + L385-466 (§Common Pitfalls)
Líneas Sección Para qué
10-32 Overview Capacidades y trade-offs (accesibilidad, móviles, position fixed)
33-47 Installation npm + CSS obligatorio, o CDN
49-116 Core Concepts Estructura data-scroll-container/-section, opciones de new LocomotiveScroll, tabla de atributos
118-275 Common Patterns Smooth básico, parallax, eventos, sticky, scrollTo, horizontal, breakpoints tablet/smartphone
277-331 Integration with GSAP ScrollTrigger scrollerProxy, scroller, refresh/update mutuos
333-353 Instance Methods init/update/destroy/start/stop, scrollTo, on/off
355-383 Performance Optimization Secciones, limitar parallax, desactivar en móvil, update en resize, destroy
385-466 Common Pitfalls Fixed roto, lazy images, posiciones desactualizadas, accesibilidad, fugas de memoria, z-index
468-480 Related Skills / Resources Skills relacionadas e índice de scripts, references y assets
  • references/api_reference.md — API completa: opciones, atributos, métodos, eventos.
  • references/gsap_integration.md — Patrones de ScrollTrigger + Locomotive (scrollerProxy, pin, scrub).
  • scripts/generate_config.py — Genera la configuración inicial: py -3 scripts/generate_config.py --smooth / --horizontal (o python3 …).
  • scripts/integration_helper.py — Genera código de integración GSAP por patrón/framework: py -3 scripts/integration_helper.py --pattern fade-in --framework react.
  • assets/starter_locomotive/ — Starter completo (index.html, main.js, style.css, package.json, README.md).
  • Importa siempre locomotive-scroll/dist/locomotive-scroll.css; envuelve el contenido en data-scroll-container y segmenta con data-scroll-section.
  • Respeta prefers-reduced-motion: smooth: !matchMedia('(prefers-reduced-motion: reduce)').matches; considera smartphone: { smooth: false }.
  • Llama a scroll.update() tras insertar contenido dinámico, cargar imágenes o en resize; llama a scroll.destroy() al desmontar o cambiar de ruta.
  • Los elementos position: fixed van fuera del contenedor (o usa data-scroll-sticky); las capas parallax necesitan z-index explícito.
  • Con GSAP: registra scrollerProxy, pasa scroller: '[data-scroll-container]' a cada ScrollTrigger y encadena ScrollTrigger.refresh() → locoScroll.update().
  • SSR-safe: instancia solo en cliente (useEffect/onMounted/client:only), nunca en el nivel superior del módulo.
  • Detecta el stack como indica la skill front-activation/skill-router (senzu/senzu.json → package.json). Es vanilla JS y sirve en HTML estático, Astro, Vue (instancia en onMounted, destruye en onUnmounted) y React (useEffect con cleanup). En proyectos React con GSAP, valora ScrollSmoother (gsap-scrolltrigger) para evitar dos sistemas de scroll; con barba-js, destruye y recrea la instancia en cada transición.