安装
- CDN
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12/dist/gsap.min.js"></script>
- npm
npm install gsap
使用
gsap.to(".box", {x: 200})
说明:
to 方法
.box 类名
x 水平方向移动的距离
有哪些方法
gsap.to()
——这是一种最常用的tween动画,就是让元素从初始状态变化到目标状态gsap.from()
——有点像to方法的逆向变化,就是让元素从目标状态变化到初始状态。gsap.fromTo()
——需要自己定义两个状态的数据,然后从前一个变化到后一个。gsap.set()
——直接设置成想要的状态,没有任何过度与动画效果。本质上就是duration为0的 .to 方法
常用属性
属性 | 说明 |
---|---|
x | 水平移动 |
y | 垂直移动 |
xPercent | 水平移动(元素自身百分比) |
yPercent | 垂直移动(元素自身百分比) |
rotation | 旋转 |
scale | 缩放 |
transformOrigin | 设置旋转中心点 |
duration | 动画变化的时长(秒)默认是0.5 |
delay | 动画变化开始前的延迟时长(秒),默认是0.5 |
repeat | 动画的重复次数 |
yoyo | 如果设置为ture,那么动画会在执行完之后再反向执行一次,就像悠悠球的效果,默认是false |
stagger | 是一个时间的设置(秒),如果有多个元素同时要被驱动,那么当这个属性设置了时间的值之后,元素们会被依次逐个驱动,间隔时长就是这个属性设置的时长 |
ease | 动画过渡的运动曲线的设置,默认是”power1.out” |
onComplete | 动画结束时执行的回调函数 |
Timelines时间线
时间线能让我们创建非常容易调节的、很灵活的顺序动画效果。下面就是一个简单的包含着三个tween动画的timeline实例效果。默认情况下,这些动画是依次添加的,他们在变化的时候也是依次执行,而且是一个执行完之后再下一个执行。
// 创建一个Timeline类型的实例
let tl = gsap.timeline()
// 把tween动画添加到timeline实例上,注意我们在用的是tl.to 而不是gsap.to
tl.to(".green", { x: 600, duration: 2 });
tl.to(".purple", { x: 600, duration: 1 });
tl.to(".orange", { x: 600, duration: 1 });
调整执行时间点
let tl = gsap.timeline()
// 绿色方块会在整个时间线开始1秒后进行移动
tl.to(".green", { x: 600, duration: 2 }, 1);
// 紫色方块会和之前一个添加的动画同时开始运动
tl.to(".purple", { x: 600, duration: 1 }, "<");
// 橘色方块会在之前所有动画都结束一秒后再开始运动
tl.to(".orange", { x: 600, duration: 1 }, "+=1");
特殊属性 Special Properties
Timelines可以设置的动画属性和tween动画绝大部分是一样的,比如像repeat和delay,可以让你轻松的设定整个顺序动画的动画属性
let tl = gsap.timeline({repeat: -1, repeatDelay: 1, yoyo: true})
tl.to(".green", { rotation: 360 });
tl.to(".purple", { rotation: 360 });
tl.to(".orange", { rotation: 360 });
时间线的默认设置
如果你发现自己总是一遍又一遍的写同一个属性,那么你可以使用 defaults来进行设置。任何添加到时间线上的defaults的属性,都会被添加到这个时间线上的tween动画继承,像是通过to(),from()和fromTo()方式添加到时间线上的动画效果都是有这个继承效果的。利用这个方式可以让你的代码更简洁一些。
var tl = gsap.timeline({ defaults: { duration: 1 } });
//这样每个动画都是1秒的时长,不用重复写了
tl.to(".color1", { x: 200 })
tl.to(".color2", { x: 200, scale: 0.2 })
tl.to(".color3", { x: 200, scale: 2, y: 20 });
控制动画
通过一个变量保存对Tween或者Timeline实例的引用
let tween = gsap.to(".color1", { duration: 10, x: 700 });
暂停动画:tween.pause()
继续动画:tween.resume()
反向变化:tween.reverse()
切换至动画1s时候的状态:tween.seek(1)
切换至动画1/4时候的状态:tween.progress(1/4)
让动画速度变为原来的0.5倍:tween.timeScale(0.5)
销毁tween实例:tween.kill()
动画事件
onStart
:动画开始时触发
gsap.to(".color1", {x:300,duration:3,onStart:event})
function event(){
console.log('触发')
}
onComplete
:动画结束时触发
onUpdate
:只要动画运行,每一帧都会触发(元素有属性变化时)
onRepeat
:每次动画重复时触发
onReverseComplete
:当动画反向执行后运动到变化起始点时触发