基于vux的Vue路由切换动画

Posted qqprincekin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于vux的Vue路由切换动画相关的知识,希望对你有一定的参考价值。

const history = window.sessionStorage
history.clear()
let historyCount = history.getItem(‘count‘) * 1 || 0
history.setItem(‘/index‘, 0)

router.beforeEach((to, from, next) => {
  const toIndex = history.getItem(to.path)
  const fromIndex = history.getItem(from.path)
  if (toIndex) {
    if (!fromIndex || parseInt(toIndex, 10) > parseInt(fromIndex, 10) || (toIndex === ‘0‘ && fromIndex === ‘0‘)) {
      store.commit(‘UPDATE_DIRECTION‘, { direction: ‘forward‘ })
    } else {
      store.commit(‘UPDATE_DIRECTION‘, { direction: ‘reverse‘ })
    }
  } else {
    ++historyCount
    history.setItem(‘count‘, historyCount)
    to.path !== ‘/index‘ && history.setItem(to.path, historyCount)
    store.commit(‘UPDATE_DIRECTION‘, { direction: ‘forward‘ })
  }
  next()
})

  

const state = {
  direction: ‘forward‘
}

  

<template>
  <div id="app">
    <transition :name="‘pop-‘ + (direction === ‘forward‘ ? ‘in‘ : ‘out‘)">
      <router-view></router-view>
    </transition>
  </div>
</template>

<script>
  import { mapState } from ‘vuex‘

  export default {
    computed: {
      ...mapState({
        direction: state => state.common.direction
      })
    }
  }
</script>

<style>
  .pop-out-enter-active, .pop-out-leave-active, .pop-in-enter-active, .pop-in-leave-active {
    will-change: transform;
    transition: .38s ease-in-out, visibility .38s;
    height: 100%;
    width: 100%;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    position: absolute;
    -webkit-perspective: 1000;
    perspective: 1000;
  }

  .pop-out-enter {
    opacity: 0;
    transform: translate3d(-100%, 0, 0);
  }

  .pop-out-leave-active {
    opacity: 0;
    transform: translate3d(100%, 0, 0);
  }

  .pop-in-enter {
    opacity: 0;
    transform: translate3d(100%, 0, 0);
  }

  .pop-in-leave-active {
    opacity: 0;
    transform: translate3d(-100%, 0, 0);
  }
</style>

  

以上是关于基于vux的Vue路由切换动画的主要内容,如果未能解决你的问题,请参考以下文章

vue 路由切换动画(滑入,滑出效果)

vue2.x + vux采坑总结

vue怎么给路由切换时添加动画

Vue中的Vux配置指南

vuex实现路由切换动画同时嵌套路由同样使用

Vue-router结合transition实现app前进后退动画切换效果