gsap库
安装:
npm install gsap -save
导入:
import gsap from "gsap";
transition的生命周期回调:
<template>
<div class="app">
<div>
<button @click="isShow=!isShow">显示/隐藏</button>
</div>
<transition @before-enter="beforeEnter"
@enter="enter"
@after-enter="afterEnter"
@before-leave="beforeLeave"
@leave="leave"
@after-leave="afterLeave">
<h2 class="title" v-if="isShow">hello world</h2>
</transition>
</div>
</template>
<script>
export default {
data() {
return {
isShow: true
}
},
methods: {
beforeEnter() {
console.log("beforeEnter");
},
enter() {
console.log("enter");
},
afterEnter() {
console.log("afterEnter");
},
beforeLeave() {
console.log("beforeLeave");
},
leave() {
console.log("leave");
},
afterLeave() {
console.log("afterLeave");
},
},
}
</script>
这些生命周期钩子对应了css中的enter-to-class等类。
使用gsap,就是在这些回调的方法中使用gsap的方法。其中from是从一个自定义的状态到结束状态,to方法是从初始状态到一个自定义的状态:
<template>
<div class="app">
<div>
<button @click="isShow=!isShow">显示/隐藏</button>
</div>
<transition @enter="enter"
@leave="leave"
:css="false">
<h2 class="title" v-if="isShow">hello world</h2>
</transition>
</div>
</template>
<script>
import gsap from "gsap";
export default {
data() {
return {
isShow: true,
distance: 200
}
},
methods: {
enter(el, done) {
console.log("enter");
gsap.from(el,{
scale:0,
x:this.distance,
// 默认是0.5s
duration:1,
// 如果不写时,默认在动画开始时同步回调done
onComplete: done
})
},
leave(el,done) {
console.log("leave");
gsap.to(el,{
scale:0,
x:200,
duration:1,
onComplete:done
})
},
},
}
</script>
其中回调方法中第一个参数el是指回调产生的元素,同时也需要传入给gsap,第二个参数是动画完成时的回调,一般需要在gasp的onComplete属性中写出。
transition的:css属性设置为false,可以跳过css检测,提高性能。
使用gsap的一个特点是通过JavaScript实现的,比较灵活。