1. 程式人生 > >Vue-router結合transition實現app前進後退動畫切換效果

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;