在 TypeScript 中使用 ScrollMagic 和 TimelineMax 结合使用创建动画

  1. 安装 ScrollMagic 和 gsap 库
    npm install scrollmagic gsap --save
  2. 在需要使用的文件中引入库文件
    import * as ScrollMagic from 'scrollmagic';
    import { TimelineMax } from 'gsap';
  3. 创建 ScrollMagic 控制器
    const controller = new ScrollMagic.Controller();
  4. 创建 TimelineMax 时间轴
    const timeline = new TimelineMax();
  5. 添加动画序列到 TimelineMax 时间轴
    //timeline.to(目标对象,动画持续时间,目标对象的属性)
    timeline.to('#box', 1, { x: 200, opacity: 0.5 })
            .to('#box', 1, { y: 200, opacity: 0.2 })
            .to('#box', 1, { x: 0, opacity: 1 })
            .to('#box', 1, { y: 0, opacity: 0.5 });
    
    //还可以使用回调函数来指定属性值,这样就可以动态计算属性值。例如:
    timeline.to('#box', 1, {
      y: (index, element) => {
        return element.clientHeight / 2; // 动态计算Y轴位置
      }
    });
    
  6. 创建 ScrollMagic 场景并添加到控制器中
    const scene = new ScrollMagic.Scene({
      triggerElement: '#trigger', // 触发元素
      duration: 500, // 滚动高度
      offset: 0, //动画插值计算的开始位置或结束位置的偏移量
      triggerHook: 'onCenter', //动画触发的位置
      reverse: false //动画是否反向播放
    })
      .setTween(timeline) // 将时间轴添加到场景中
      .addTo(controller); // 添加到控制器中
      //on 方法可以接受多个事件类型,例如 enter、leave、start、end 等。可以通过事件回调函数来实现自定义动画效果
      .on('progress', (ev: { progress: number }) => {
          //ev.progress:动画执行的进度,0开始,1结束
      })
    
    
    new Scene() 方法可接受以下常用参数
    1.duration:指定动画所需要的滚动高度。这个值可以是一个数字,表示动画所需要的滚动高度,也可以是一个函数,用于计算动画所需要的滚动高度。默认为 0,表示动画仅在触发元素进入视口时触发。
    const scene = new ScrollMagic.Scene({ duration: 500 });
    
    2.offset:指定动画插值计算的开始位置或结束位置的偏移量。偏移量可以是一个数字或函数,用于计算偏移量。默认为 0。
    const scene = new ScrollMagic.Scene({ offset: -50 });
    
    3.triggerElement:指定触发动画的元素节点。这个值可以是一个选择器字符串,也可以是一个原生 DOM 元素。如果不指定,默认为文档的根元素。
    const scene = new ScrollMagic.Scene({ triggerElement: '#trigger' });
    
    4.triggerHook:指定动画触发的位置。可以是一个数字或字符串。数字 0 表示元素顶部;数字 1 表示元素底部;字符串 “onCenter” 表示元素中心。默认为 0。
    const scene = new ScrollMagic.Scene({ triggerHook: 'onCenter' });
    
    5.reverse:指定动画是否反向播放。反向播放时,动画会在离开视口时播放。默认为 true。
    const scene = new ScrollMagic.Scene({ reverse: false });
    
    6.loglevel:指定日志记录的级别,用于调试。取值可以是 0(关闭日志)、1(记录警告和错误)、2(记录警告、错误和调试信息)。默认为 2。
    const scene = new ScrollMagic.Scene({ loglevel: 1 });
    
    7.enabled:指定动画是否启用。默认为 true,即启用动画。
    const scene = new ScrollMagic.Scene({ enabled: false });
    
  7. 在滚动事件中触发动画效果

        我们创建了一个 ScrollMagic 控制器,然后使用 TimelineMax 创建了一个时间轴,并在时间轴中添加了多个动画序列。之后,通过创建一个 ScrollMagic 场景并将时间轴通过 setTween() 方法添加到场景中,从而将动画效果绑定到了滚动事件。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值