前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GSAP基础学习

GSAP基础学习

作者头像
心安事随
发布2024-07-29 16:33:49
1450
发布2024-07-29 16:33:49
举报
文章被收录于专栏:前端大合集

TimeLines学习

学习资源来源官网,翻译来自有道词典

Getting Started with GSAP - continued - Learning Center - GreenSock

TimeLines让我们可以创建可调整的、有弹性的动画序列。下面是一个包含三个补间的简单时间线。默认情况下,游戏会在最后添加内容,这样玩家就可以一个接一个地玩游戏。

基本演示

代码语言:javascript
复制
  let t1 = gsap.timeline() 
  t1.to('.one',{x:600,duration:2}) // 这个元素的动画时长为2秒
  t1.to('.two',{x:600,duration:1}) // 这个元素的动画时长为1秒
  t1.to('.three',{x:600,duration:1}) // 这个元素的动画时长为1s

Position Parameter 位置参数

这个方便的小参数是构建具有精确定时的华丽序列的秘密。看看这个时间线。

具体效果可以见官网演示

代码语言:javascript
复制
   // 从时间轴的1秒开始(绝对) 相当于延迟一秒
   t1.to('.one', { x: 600, duration: 2 }, 1)
   // 在前一个动画的开始插入
   t1.to('.two', { x: 600, duration: 1 }, "<")
   // 在时间轴结束后插入1秒(间隙)
   t1.to('.three', { x: 600, duration: 1 }, "+=1")

官网也提供了一个调试面板可以更好地理解位置参数对动画的影响

Getting Started with GSAP - continued - Learning Center - GreenSock

Special Properties 特殊性质

时间轴和补间有很多相同的特殊属性,比如repeat和delay,可以让你把整个动画序列作为一个整体来控制!

具体看代码

代码语言:javascript
复制
  // 在timeline() 方法可以填写一些元素的共有的属性
  // 重复次数 -1 无限次 , 每次重复之前延迟1s yoyo 来回动画 从前到后,从后到前
 let t1 = gsap.timeline({ repeat: -1, repeatDelay: 1, yoyo: true })
 t1.to('.one', { rotation: 360 })
 t1.to('.two', { rotation: 360 })
 t1.to('.three', { rotation: 360 })

Timeline Defaults 时间轴的违约

如果你发现自己一遍又一遍地输入一个属性,是时候设置默认值了。在时间轴上添加到默认对象的任何属性都会被所有使用便利方法(如to()、from()和fromTo())创建的子对象继承。这是保持代码简洁的好方法。

代码语言:javascript
复制
   let t1 = gsap.timeline({ defaults: { duration: 1 ,yoyo:true,repeat:-1} })
 t1.to('.one', { x: 600 })
 t1.to('.two', { x: 600 })
 t1.to('.three', { x: 600 })

Controlling Your Animations 控制动画

到目前为止,我们看到的所有动画都是在页面加载或延迟后播放的。但是如果你想对动画有更多的控制呢?一个常见的用例是在特定交互(如按钮单击或悬停)时播放动画。控制方法可以用于补间和时间线,并允许您播放,暂停,翻转甚至加速动画!

还有一些 这里列出常用的 详细可以见官网

代码语言:javascript
复制
 let t1 = gsap.to('.green',{duration:6,rotation:360,x:600}) 
 // 获取按钮元素
 // 播放
 document.querySelector('.play').addEventListener('click',()=>{
      t1.play()
 })
 // 暂停
  document.querySelector('.pause').addEventListener('click',()=>{
      t1.pause()
 })
 // 继续
 document.querySelector('.resume').addEventListener('click',()=>{
      t1.resume()
 })
 // 反转
 document.querySelector('.reverse').addEventListener('click',()=>{
      t1.reverse()
 })
 // 重置
 document.querySelector('.restart').addEventListener('click',()=>{
      t1.restart()
 })
 // 清除
 document.querySelector('.kill').addEventListener('click',()=>{
      t1.kill()
 })

Callbacks 回调

如果你想知道动画何时开始,或者想在动画结束时运行一些JS,你可以使用回调函数。所有补间和时间线都有以下回调函数:

回调方法

解释

onComplete

动画完成时调用。

onStart

动画开始时调用

onUpdate

每次动画更新时调用(动画激活时的每一帧)。

onRepeat

每次动画重复时调用。

onreverseccomplete

当动画反转到起点时调用。

代码语言:javascript
复制
  gsap.to('.box',{
       x:300,
       duration:1.5,
       delay:2,
       onStart:()=>{console.log("动画开始")},
       onUpdate:()=>{console.log("每一帧")},
       onCompete:()=>{console.log("动画完成")}
 })

常用属性备忘录

1.基本

代码语言:javascript
复制
   // ""to"补间(对给定的值进行动画处理)
         gsap.to(".box", { // selector 表示dom元素 支持css选择器
             // 以下属性 任何属性(不限于CSS)
             x: 102, 
             backgroundColor: "red", // 元素背景颜色
             duration: 1, // 动画执行一次的时长周期
             delay: 0.5,  // 延迟 0.5s后执行动画
             ease: "power2.inOut",  // 元素动画速率模式
             stagger: 0.1, // 错开起动时间
             paused: false, // 动画禁止还是不禁止,默认禁止 : true
             overwrite: "auto", // default is false
             repeat: 2, // 动画重复次数,-1表示无限次
             repeatDelay: 0.2, // 每次重复动画的延迟秒数(动画周期间隔时长)
             repeatRefresh: true, // 每次重复时失效
             yoyo: true, // 如果为 true,则补间每隔一次重复将朝相反的方向运行。(像溜溜球)默认值:假
             yoyoEase: true, // 动画速率模式 or ease like "power2"
             immediateRender: false,
             // onComplete: myFunc, // 动画完成之后执行的回调 函数
             // other callbacks: 
             // onStart, onUpdate, onRepeat, onReverseComplete
             // Each callback has a params property as well
             // i.e. onUpdateParams (Array)
         });
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • TimeLines学习
    • Position Parameter 位置参数
      • Special Properties 特殊性质
        • Timeline Defaults 时间轴的违约
          • Controlling Your Animations 控制动画
            • Callbacks 回调
            • 常用属性备忘录
              • 1.基本
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档