我已经开始学习vue.js,我想在两个页面之间使用GSAP(而不是CSS)进行过渡,因此我找到了以下属性:v-on:enter
,v-on:leave
。
似乎我的v-on:enter
动画仅在我的应用程序的首次调用中起作用。我看不到“离开”动画,而且在出现新页面时,我有一些重复的内容。
我在这里有两个问题:
v-on:enter
动画? (到目前为止,即使我的DOM未完全加载,我的动画也会开始播放)这是我在App.vue文件中使用的代码,非常感谢。
<template>
<div id="app">
<transition
appear
v-on:enter="enter"
v-on:leave="leave"
v-bind:css="false"
>
<router-view/>
</transition>
</div>
</template>
<script>
import { TweenMax } from "gsap/TweenMax";
export default {
name: 'App',
components: {
},
methods: {
enter(el, done) {
TweenMax.to('body', 1, {opacity:1, onComplete:done});
},
leave(el, done) {
TweenMax.to('body', 1, {opacity:0, onComplete:done});
}
}
}
</script>
答案 0 :(得分:1)
out-in
transition mode首先移出当前视图,然后在完成后移入新视图。beforeEnter
方法,以将目标元素opacity
设置为0
。beforeEnter
添加v-on:before-enter="beforeEnter"
来收听transition
JavaScript hook
body
组件。除非有充分的理由使用el
作为目标元素,否则应使用视图组件<template>
<div id="app">
<transition
appear
v-bind:css="false"
v-on:before-enter="beforeEnter"
v-on:enter="enter"
v-on:leave="leave"
>
<router-view/>
</transition>
</div>
</template>
<script>
import { TweenMax } from "gsap/TweenMax";
export default {
name: 'App',
components: {
},
methods: {
beforeEnter(el) {
TweenMax.set(el, { opacity: 0 });
},
enter(el, done) {
TweenMax.to(el, 1, { opacity:1, onComplete:done });
},
leave(el, done) {
TweenMax.to(el, 1, { opacity:0, onComplete:done });
}
}
}
</script>
。
修改后的代码:
Column(
children: <Widget>[
cardGen(),
...