GSAP动画
<template>
<div class="container">
<div class="box"></div>
</div>
</template>
<script lang="ts">
import { defineComponent, onMounted } from "vue";
import { gsap } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";
gsap.registerPlugin(ScrollTrigger);
export default defineComponent({
setup() {
onMounted(() => {
gsap.to(".container", {
scrollTrigger: {
trigger: ".box",
markers: true,
scrub: true,
},
x: 500,
y: 500,
backgroundColor: "red",
duration: 5,
});
});
return {};
},
});
</script>
<style lang="scss" scoped>
.container {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
.box {
width: 100px;
height: 100px;
background-color: red;
margin-top: 1000px;
margin-bottom: 1000px;
}
}
</style>
回调函数
- onComplete:动画完成时调用。
- onStart:动画开始时调用
- onUpdate:每次动画更新时调用(在动画处于活动状态时每帧调用)。
- onRepeat:每次动画重复时调用一次。
- onReverseComplete:动画反转后再次到达其起点时调用。
var tween = gsap.from("#app", {
duration: 5,
x: 500,
ease:"elastic.in(1,1)",
onComplete:function () { // 动画播放完成时调用
console.log("111");
}
});
回调参数
var tween = gsap.to("#app", {
duration: 1,
x: 100,
onComplete: tweenComplete,
onCompleteParams: ["done!"]
});
function tweenComplete(message) {
console.log(message);
}
使用上面这种方式调用回调函数时,如果需要传递参数,必须以数组方式传递,即使只有一个参数。
控制动画
tween.pause(); 暂停
tween.resume(); 恢复
tween.reverse(); 反向播放
tween.seek(0.5); 跳到0.5s
tween.progress(0.25); 跳到4分之1处
tween.timeScale(0.5); 速度减慢
tween.timeScale(2); 速度翻倍
tween.kill(); 删除动画
然后将需要依次触发的动画添加入时间线里即可,例如:
var tl = gsap.timeline();
tl.add(gsap.to("#app", {
duration: 1,
delay: 1,
x: 500,
}));
tl.to("#app", {
duration: 1,
y: 500,
});
动图封面
时间轴的特殊属性:
repeat:动画重复的次数。
repeatDelay:两次重复之间的间隔时间(以秒为单位)。
yoyo:如果为true,则每次重复播放都会前后交替进行。
delay:时间轴开始之前的延迟(以秒为单位)。
onComplete:时间线播放完毕后调用的函数。
var tl = gsap.timeline({
repeat: 1,
yoyo: true,
onRepeat: onRepeatHandler,
onComplete: onCompleteHandler
});
Getter / Setter 方法
- time() 播放头的本地位置(当前时间,以秒为单位),不包括任何重复或repeatDelays。
- progress() 它是介于0和1之间的值,指示播放头的位置,其中0处在开始位置,0.5处在中途完成,1处在结束位置。
- duration() 动画的持续时间(以秒为单位),不包括任何重复或repeatDelays。
- delay() 动画的初始延迟(动画开始之前的时间长度,以秒为单位)。