You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在单个ScrollMagic场景中实现多个GSAP Tween动画?

如何在单个ScrollMagic场景中实现多个GSAP Tween动画

嘿,刚接触GSAP和ScrollMagic的时候,确实容易陷入“一个动画对应一个场景”的误区,其实咱们有更简洁的方式在单个场景里搞定多个动画,下面给你两种实用的方法:

方法一:使用GSAP时间线(推荐)

这是最灵活的方案,用GSAP的timeline把多个Tween整合成一个时间线,再绑定到ScrollMagic场景上,能精准控制动画的顺序、延迟和并行关系。

// 初始化ScrollMagic控制器
var controller = new ScrollMagic.Controller();

// 创建GSAP时间线,整合多个动画
var animationTimeline = gsap.timeline();
// 第一个动画:#animate1淡入+左移
animationTimeline.to("#animate1", 0.4, { opacity: 1, left: 0 })
  // 第二个动画:#animate2在第一个动画结束后延迟0.2s开始淡入+左移
  .to("#animate2", 0.4, { opacity: 1, left: 0, delay: 0.2 })
  // 如果你想让两个动画同时开始,就用position参数指定为0
  // .to("#animate2", 0.4, { opacity: 1, left: 0 }, 0);

// 创建单个ScrollMagic场景,绑定时间线
var singleScene = new ScrollMagic.Scene({ triggerElement: "#trigger1" })
  .setTween(animationTimeline) // 把整段时间线传给场景
  .reverse(false) // 关闭反向动画
  .addTo(controller); // 一定要把场景添加到控制器才会生效!

方法二:多次调用setTween()

如果你的多个动画是同时触发的简单动画,也可以在同一个场景里多次调用setTween(),不过这种方式没法控制动画的先后顺序,适合不需要时序的场景:

var controller = new ScrollMagic.Controller();

var singleScene = new ScrollMagic.Scene({ triggerElement: "#trigger1" })
  .setTween("#animate1", 0.4, { opacity: 1, left: 0 })
  .setTween("#animate2", 0.4, { opacity: 1, left: 0 })
  .reverse(false)
  .addTo(controller);

两种方法里更推荐时间线方案,因为它能应对复杂的动画时序需求,后期维护起来也更清晰~

内容的提问来源于stack exchange,提问作者Ken Ryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:33:45