zoukankan      html  css  js  c++  java
  • 基于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%;
         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>
    

      

  • 相关阅读:
    转:Caused by: java.lang.NoSuchMethodError: org.apache.log4j.Category.log
    maven安装
    eclipse安装插件
    java.lang.ClassNotFoundException: com.*.listener.ConfigInfoReader
    oracle
    myeclipse中文乱码,JSP页面乱码
    ansible 列表变量、字典变量
    python模块
    python函数
    python数据类型2
  • 原文地址:https://www.cnblogs.com/QQPrincekin/p/11684803.html
Copyright © 2011-2022 走看看