zoukankan      html  css  js  c++  java
  • vue实现不同页面跳转的左滑右滑效果切换效果

    1、在app.vue增加代码如下

    <template>
      <div id="app">
        <transition :name="transitionName">
          <router-view class="views" />      
        </transition>
      </div>
    </template>
    
    <script>
    
    export default {
      name: 'App',
      data() {
        return {}
      },
      computed: {
        transitionName () {
          return this.$store.state.transitionName
        }
      }
    }
    </script>
    
    <style lang="scss">
    /*切换页面时的滑动效果*/
    .views {
      position: absolute;
       100%;
      transition: all .8s ease;
      top: 0;
     }
    .slide-left-enter-active {
      transition: all .3s ease;
    }
    .slide-left-leave-active {
      transition: all .4s ease;
    }
    .slide-left-enter {
      transform: translateX(100%);
      opacity: 0;
    }
    .slide-left-leave-to {
     transform: translateX(-100%);
      opacity: 0;
    }
    
    .slide-right-enter-active {
      transition: all .3s ease;
    }
    .slide-right-leave-active {
      transition: all .4s ease;
    }
    .slide-right-enter {
      transform: translateX(-100%);
      opacity: 0;
    }
    .slide-right-leave-to {
        transform: translateX(100%);
        opacity: 0;
    }
    </style>

    main.js文件

    import store from './store'
    
    // 路由跳转前进后退动画,Vue原型上定义transition为动画效果
    router.beforeEach((to, from, next) => {
      store.commit('changeTransition', 'slide-none')
      if (from.meta.tree > to.meta.tree) {
        // 后退,想右滑动
        store.commit('changeTransition', 'slide-right')
      } else if (from.meta.tree < to.meta.tree) {
        // 前进,想左滑动
        store.commit('changeTransition', 'slide-left')
      } else {
        // 同一层级,无动画
        store.commit('changeTransition', 'slide-none')
      }
      next()
    })

    store文件

    index.js

    import Vue from 'vue'
    import Vuex from 'vuex'
    import state from './state'
    import mutations from './mutations'
    
    Vue.use(Vuex)
    
    export default new Vuex.Store({
      state,
      mutations
    })

    mutations.js

    export default {
      changeTransition (state, transitionName) {
        state.transitionName = transitionName
      }
    }

    state.js

    export default {
      changeTransition (state, transitionName) {
        state.transitionName = transitionName
      }
    }

     组件里面是content布局

      <div :class="style">
        <v-header title="每日成绩">
           // 固定头部
        </v-header>
        <div class="content">
           // 滚动容器
        </div>
    </div>
  • 相关阅读:
    C++随笔
    STM32调试总结
    摄像头CMOS和CCD的比较
    modelsim 中 WAVE窗口中能不能只显示变量名,而不显示路径
    modelsim仿真xilinx mig ip core相关问题
    modelsim仿真vivado自动化脚本
    modelsim无法识别include文件的解决方法
    UVM的类库
    uvm
    uvm
  • 原文地址:https://www.cnblogs.com/qdlhj/p/11249336.html
Copyright © 2011-2022 走看看