学习资源来源官网,翻译来自有道词典
Getting Started with GSAP - continued - Learning Center - GreenSock
TimeLines让我们可以创建可调整的、有弹性的动画序列。下面是一个包含三个补间的简单时间线。默认情况下,游戏会在最后添加内容,这样玩家就可以一个接一个地玩游戏。
基本演示
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
这个方便的小参数是构建具有精确定时的华丽序列的秘密。看看这个时间线。
具体效果可以见官网演示
// 从时间轴的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
时间轴和补间有很多相同的特殊属性,比如repeat和delay,可以让你把整个动画序列作为一个整体来控制!
具体看代码
// 在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 })
如果你发现自己一遍又一遍地输入一个属性,是时候设置默认值了。在时间轴上添加到默认对象的任何属性都会被所有使用便利方法(如to()、from()和fromTo())创建的子对象继承。这是保持代码简洁的好方法。
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 })
到目前为止,我们看到的所有动画都是在页面加载或延迟后播放的。但是如果你想对动画有更多的控制呢?一个常见的用例是在特定交互(如按钮单击或悬停)时播放动画。控制方法可以用于补间和时间线,并允许您播放,暂停,翻转甚至加速动画!
还有一些 这里列出常用的 详细可以见官网
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()
})
如果你想知道动画何时开始,或者想在动画结束时运行一些JS,你可以使用回调函数。所有补间和时间线都有以下回调函数:
回调方法 | 解释 |
---|---|
onComplete | 动画完成时调用。 |
onStart | 动画开始时调用 |
onUpdate | 每次动画更新时调用(动画激活时的每一帧)。 |
onRepeat | 每次动画重复时调用。 |
onreverseccomplete | 当动画反转到起点时调用。 |
gsap.to('.box',{
x:300,
duration:1.5,
delay:2,
onStart:()=>{console.log("动画开始")},
onUpdate:()=>{console.log("每一帧")},
onCompete:()=>{console.log("动画完成")}
})
// ""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)
});