Vue-router結合transition實現app前進后退動畫切換效果


一丶首先配置路由並且修改路由配置

路由配置就不講了
重點,給VueRoute添加一個goBack方法,用於記錄路由的前進后退狀態 this.isBack = true 

VueRouter.prototype.goBack = function () { 
  this.isBack = true
  window.history.go(-1)
}

 

二丶監聽路由變化(在路由變化時判斷此時的路由狀態是前進還是后退)

<template>
  <div>

    動態綁定路由動畫,根據路由狀態的不同綁定不同的路由動畫分別為  :‘slide-left’  和 'slide-right'

    <transition :name="transitionName"> 
      <router-view class="Router"></router-view>
    </transition>
  </div>
</template>

<script>
export default {
  data() {
    return {
      transitionName: 'slide-right'  // 默認動態路由變化為slide-right
    }
  },
  watch: {
   '$route' (to, from) {
    let isBack = this.$router.isBack  //  監聽路由變化時的狀態為前進還是后退
      if(isBack) {
        this.transitionName = 'slide-right'
      } else {
             this.transitionName = 'slide-left'
     }
  this.$router.isBack = false
  }
   }
 }
</script>

三丶給前進后退動畫添加不同的動畫效果,具體代碼如下:

<style>

.Router {
     position: absolute;
     width: 100%;
     transition: all .8s ease;
     top: 40px;
}

.slide-left-enter,
 .slide-right-leave-active {
     opacity: 0;
    -webkit-transform: translate(100%, 0);
    transform: translate(100%, 0);
}

.slide-left-leave-active,
.slide-right-enter {
     opacity: 0;
    -webkit-transform: translate(-100%, 0);
    transform: translate(-100% 0);
}
</style>

 

四丶路由前進的時候按正常方法走就行了;

五丶后退的時候調用goBack方法就OK;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM