zoukankan      html  css  js  c++  java
  • vue-router设置页面切换滑动效果的方法及解决遇到的坑

    先上gif:这里演示顺序是1232121

     

    1.router.js中配置入口路由

    {
        path: '/',
        redirect: '/index'
      }
    2.main.js中new vue()之上:
    window.addEventListener('popstate',function(e){
      router.isBack = true
    },false)

    3.app.vue中配置公共滑动动画

    <div id="app">
        <transition :name="transitionName">
          <router-view></router-view>  
        </transition>
     </div>
    并监听路由判定是前进还是后退给予不同的动画名称
    watch:{
        $route(to,from){
          let isBack = this.$router.isBack
          if(this.$router.isBack){
            this.transitionName = 'slide-right'
          }else{
            this.transitionName = 'slide-left'
          }
          this.$router.isBack = false
        }
      },
    以及公共的css
    .slide-left-enter, .slide-right-leave-to {
      opacity: 0;
      transform: translateX(100%)
    }
    .slide-left-leave-to, .slide-right-enter {
      opacity: 0;
      transform: translateX(-100%)
    }
    .slide-left-enter-active, .slide-left-leave-active, .slide-right-enter-active, .slide-right-leave-active {
      transition: .5s;
      position: absolute;
      top:0;
    }
    这样效果已经实现,这里说一些遇到的坑和解决方法:
    1.前进或是后退动画方向不对,这里我是将router.js中的mode值从history路由改为hash路由
    2.最后一个页面的返回动画方向未改变,常见的下一个页面的hearder页面的返回通常用组件写的,需要手动改掉返回路径@click="$router.back(-1)"
  • 相关阅读:
    Python与Flask
    Python与MySQL
    range,map,sum
    Java:初始化类、变量、程序块加载解析
    HTML_记录2
    HTML_记录1
    查看当前连接的实例名
    expdp impdp
    行列转换
    oracle创建定时任务
  • 原文地址:https://www.cnblogs.com/wd163/p/12531746.html
Copyright © 2011-2022 走看看