2017-02-23 11 views
5

新しいリンクをクリックするたびにルータービューコンポーネントにいくつかのトランジションを作成しようとしています。問題は、フェードアニメーションの1つのみが機能することです。たとえば、フェードアウトしますが、新しいページは通常のようにすぐに表示されます。基本的に私はenter-active-classまたはleave-active-classのどちらか一方しか持てませんが、同時に両方を持つことはできません。VueJsのルータービュー遷移

<template> 

    <div class="tom-layout"> 
     <navBar class="z-depth-0"></navBar> 
     <div class="content-layout"> 
      <transition name="fade"> 
       <router-view></router-view> 
      </transition> 
     </div> 
    </div> 

</template> 

<script> 
    import NavBar from './components/NavBar.vue'; 

    export default { 
     components: { 
      navBar: NavBar 
     } 
    } 

</script> 

<style lang="scss"> 
    @import url('https://fonts.googleapis.com/css?family=Ek+Mukta'); 

    body { 

     overflow: hidden; 

     .content-layout { 
      margin-top: -64px; 
      width: 100%; 
      z-index: -5; 
     } 
    } 


.fade-enter { 
    opacity: 0; 
} 

.fade-enter-active { 
    transition: opacity 2s ease; 
} 

.fade-leave { 

} 

.fade-leave-active { 
    transition: opacity 2s ease; 
    opacity: 0; 
} 

答えて

4

私はちょうどmodeを使用しています:out-inそれは微細な作業に思える:

<transition name="fade" mode="out-in"> 
    <router-view></router-view> 
    </transition> 

fiddleの作業を確認してください。

+0

ありがとうございました。これにより、問題が解決されます。 私が見つけたもう一つの解決策は、遷移と同じ持続時間で.fade-enter-activeに遷移遅延を追加することでした。 '.fade-enter-active { \t遷移:不透明度0.25sの容易さ; \t遷移遅延:0.25s; } ' –