GSAP
GSAP 支持HTML, SVG, React, Vue, Angular, jQuery, Canvas, CSS;通过对象属性过渡修改实现动画
安装
npm i gsap -S
使用
import { gsap } from "gsap"; // gsap core
import { PixiPlugin } from "gsap/PixiPlugin";// 额外插件
gsap.registerPlugin(PixiPlugin);
核心
基础
gsap.to:当前状态作为起始状态,向定义的数值作为结束状态动画
gsap.from:自定义的数值作为起始状态,向当前状态作为结束状态动画
gsap.fromTo:自定义2个数值作为起始状态和结束状态,定义过渡动画
gsap.to('.animate-box', { opacity: 1, duration: 1 });
gsap.from('.animate-box', { x: -9999, duration: 1 }); // 入场动画
gsap.fromTo('.animate-box', { rotation: 0 }, { rotation: 360, duration: 1 }); // 入场动画
时间线
gsap.timeline:对多个动画tween排序快速实现连续多段动画,无需手动计算并设置延迟
gsap.timeline({ 配置对象 })
tl.add(tween):添加1个tween至时间线
tl.addLabel(labelName):添加1个label标记
tl.addPause(“>+=1”, handle):在上一项结束时暂停,并在1秒后执行处理
tl.call(handle):添加1个调用处理
配置对象
data:将值添加到源动画对象data引用
delay:延迟时长
duration:动画时长
ease:缓动函数,值 none power1 power2 power3 power4 bounce slow steps ……
paused:是否立即播放,默认为 false 立即播放
reversed:是否反方向过渡
repeat:重复播放次数,-1时无限播放
repeatDelay:重复间隔时长
yoyo:是否顺序播放后逆序返回
onStart onUpdate onComplete onRepeat:事件回调
onInterrupt:动画被中止(即被kill销毁)
全局方法
gsap.effects:注册动画效果
gsap.defaults():声明tween的属性默认值
gsap.defaults({
ease: "linear",
duration: 1
});
gsap.delayedCall(n, callback):延迟n秒后调用
-
delayedCall.kill()销毁 -
gsap.killTweensOf(callback)销毁过渡对象上所有动画 teween
gsap.killTweensOf(".class"):销毁源动画对象上所有tween
gsap.registerPlugin(pluginObject):注册插件
gsap.registerEffect():注册效果
控制
tween.pause():暂停
tween.resume():恢复播放
tween.seek(1.5):跳至指定动画时间点状态
tween.reverse():反转播放
tween.restart():重启并从头开始播放
tween.kill():销毁动画
tween.timeScale():速度缩放
监听
事件
tween.eventCallback()
事件类型
onStart:开始
onUpdate:进行中
onRepeat:重复开始
onComplete:结束
事件回调
tween.eventCallback("onUpdate", () => tween.progress());
tween.eventCallback("onUpdate", null);
Promise
tween.then():返回动画结束Promise
状态
tween.isActive() :动画是否运行中且正在播放
tween.paused():动画是否处于暂停
tween.progress():当前进度
tween.iteration(): 动画处于第几个重复次数
插件
ScrollTrigger 滚动触发器
ScrollToPlugin 过渡滚动
ScrollSmoother 平滑滚动
MotionPathPlugin 路径动画
InertiaPlugin 惯性动量的运动
PixiPlugin pixi.js属性支持
MorphSVGPlugin svg形状平滑变换
DrawSVGPlugin svg笔画绘制动画
TextPlugin 文本内容动画
PhysicsPropsPlugin 根据速度或加速度调整对象属性动画
Physics2DPlugin 提供简单的物理功能,根据速度、角度、重力、加速度、加速度角、摩擦力的组合来调整物体xy坐标
CSSPlugin 对DOM元素的CSS属性进行动画处理
BezierPlugin 贝塞尔曲线动画化
Draggable Dom元素滚动