vue路由切换滑动效果

1.增加页面路由

{
    path: '/feedbackList',
    name: 'feedbackList',
    component: () => import('../views/feedbackList/index'),
    meta:{
      title: "反馈列表",
      index: 1
    }
  },
  {
    path: '/feedbackRecordList',
    name: 'feedbackRecordList',
    component: () => import('../views/feedbackList/record'),
    meta:{
      title: "记录列表",
      index: 2
    }
  },
  {
    path: '/feedbackRecordDetails',
    name: 'feedbackRecordDetails',
    component: () => import('../views/feedbackList/details'),
    meta:{
      title: "记录详情",
      index: 3
    }
  }

2.修改

接着,我们打开 App.vue 页面

<router-view />

修改为

<transition :name="transitionName"><router-view /></transition>

3.App.vue最终代码

<template>
  <div id="app">
    <transition :name="transitionName">
      <router-view />
    </transition>
  </div>
</template>

<script>
export default {
  name: 'App',
  data() {
    return {
      transitionName: "",
    };
  },
  methods: {
  },
  components: {
  },
  watch:{
    $route(to,from){
      //实现路由跳转动画
      if (to.meta.index > from.meta.index)  
        this.transitionName = "slide-left";
      if (to.meta.index < from.meta.index)
        this.transitionName = "slide-right";
    }
  }
}
</script>

<style>
#app {
  height: 100%;
  min-height: 100%;
}
/* 路由页面跳转交互 */
.slide-right-enter-active,.slide-right-leave-active,.slide-left-enter-active,.slide-left-leave-active {
  will-change: transform;
  transition: all .5s;
  position: absolute;
}
.slide-right-enter {
  opacity: 0;
  transform: translate(-100%);
}
.slide-right-leave-active {
  opacity: 0;
  transform: translateX(100%);
}
.slide-left-enter {
  opacity: 0;
  transform: translateX(100%);
}
.slide-left-leave-active {
  opacity: 0;
  transform: translateX(-100%);
}
</style>

 

posted @ 2024-05-21 21:14  热心市民~菜先生  阅读(8)  评论(0编辑  收藏  举报