gsap是前端动画框架,与anime.js很像,但后来我研究了下发现他更强大。所以就放弃了anime。
gsap之前有很多个子框架(Tween和Timeline)组成,现在他们全都合为一个了(3.x版本),直接使用gsap这个对象就可以调用以前子框架里的方法了。cdn如下
<script>https://cdnjs.cloudflare.com/ajax/libs/gsap/3.2.6/gsap.min.js</script>
Tweens的方法也都在gsap这个对象里主要是以下三个
// id为id1的dom元素,右移111,持续时间为1s
gsap.to('#id1',{x:111,background:'red',duration:1});
上面注意到了第一个参数是个选择器,第二个参数是移动后的属性或样式,如上面的x,background,但是其实第二个参数里除了基础的样式,还有一些gsap内定的参数
。第二个参数在官网被称作vars
。
这里简单列出几个常用的vars属性
常用样式属性:
常用内置属性 官网叫做 Special Properties
from与to函数接的参数相同,但是from规定了动画开始的属性,动画结束的属性则是当前css中定好的属性。to则是规定动画结束的属性,动画开始的属性是当前css中定义的属性。
fromTo是from与to的合体他的参数是gsap.fromTo('.a',{开始属性},{结束属性})
且一般duration这些属性只在结束属性中去定义。
Tween是对选中的dom元素进行补间动画,是比较单元化的一种操作。例如平移是一个单元化的动画,而平移然后旋转然后放大,然后另一组元素延时1s进行变色,这一些列操作的组合,其实需要用到多个Tween进行编排,而这个编排工具就是Timeline
。
例如如果只用补间来实现连续的三个动画,需要借助delay属性来进行编排:
gsap.to("#id", {x: 100, duration: 1});
gsap.to("#id", {y: 50, duration: 1, delay: 1}); //wait 1 second
gsap.to("#id", {opacity: 0, duration: 1, delay: 2}); //wait 2 seconds
而如果使用时间线:
var tl = gsap.timeline();
tl.to("#id", {x: 100, duration: 1});
.to("#id", {y: 50, duration: 1});
.to("#id", {opacity: 0, duration: 1});
!! Timeline的to方法和gsap.to几乎是一样的,第一个参数是选择器,第二个是vars。Timeline可以连续调用to方法,讲多个动画串联起来。
Timeline的vars的特殊属性和Tween的大部分重合但稍有不同:
Timeline的to方法有第三个参数,是指定偏移时间的。例如
// 第一个动画指定为1s后触发
tl.to("#id", {x: 100, duration: 1},1);
// 第二个动画指定为第一个动画结束1s后触发
.to("#id", {y: 50, duration: 1},'+=1');
// 第三个动画指定为第二个动画结束前0.5s触发
.to("#id", {opacity: 0, duration: '-=0.5'});
小结:
<1
上个动画开始后延时1s>1
上个动画结束后1s<-1
上个动画开始前1s>-1
上个动画结束前1s其实+=和>效果一样,我试了下确实是一样的:(
,不知道为啥要这么设计,感觉一般就用大于号和小于号吧。
gsap.timeline()
上面的构造方法中是可以输入构造参数的。构造参数可以指定的属性就是上图中的这些属性。例如{repeat:3}
就可以使动画重复3次。