【问题标题】:Transition between two pages doesn't work with vue.js and GSAP两个页面之间的过渡不适用于 vue.js 和 GSAP
【发布时间】:2019-11-11 16:12:25
【问题描述】:

我已经开始学习 vue.js,我想在两个页面之间使用 GSAP(而不是 css)进行转换,所以我找到了这些属性:v-on:enterv-on:leave

我的v-on:enter 动画似乎只在我的应用程序的第一次调用中起作用。我没有看到“离开”动画,而且当新页面出现时我有一些重复的内容。

我有两个问题:

  • 我错过了什么?
  • 如何在 DOM 完全加载时启动 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>

【问题讨论】:

    标签: javascript vue.js transition gsap


    【解决方案1】:
    1. 使用out-intransition mode先将当前视图转出,然后在完成后,新视图转入。
    2. 在您的组件方法选项中创建一个beforeEnter 方法以将目标元素opacity 设置为0
    3. 通过添加v-on:before-enter="beforeEnter" 来收听beforeEnter JavaScript hook transition 组件。

    除非有充分的理由使用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>
    

    【讨论】:

    • 感谢您的回答,我还有一个问题,因为我使用的是nuxt版本,所以离开功能不起作用。 yarn upgrade nuxt --latest 修复了整个事情
    猜你喜欢
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 2013-08-06
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 2011-08-16
    相关资源
    最近更新 更多