Vue 同级别路由 前进后退动画实现

本文详细介绍如何在Vue项目中实现基于路由变化的滑动过渡动画效果,通过监听路由变化,动态设置过渡名称,实现页面切换时的左滑和右滑动画。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

App.vue
<template>
  <div id="app">
    <transition :name="transitionName">
        <router-view class="child-view"></router-view>
    </transition>
  </div>
</template>

<script>

export default {
  name: "App",
  data() {
    return {
      transitionName: "slide-left"
    };
  },
  watch: {
    '$route'(to, from) {
      //获取当前路由数据,并转化为数组,没有就默认为空
      let routersArr=sessionStorage.getItem('routers')&&sessionStorage.getItem('routers').split(',')||[];
      //如果当前的路由数组为空那么添加 from 的路径以及 to 的路径
      if(routersArr.length==0){
        routersArr.push(from.path);
        routersArr.push(to.path);
      }else{
        //检查即 to 的路径,如果存在在当前路由数组,那么是返回操作,删除此路径及以后的路径
        if(routersArr.indexOf(to.path)!=-1){
          this.transitionName='slide-right';
          routersArr.splice(routersArr.indexOf(to.path)+1,100);
          //如果不存在,那么添加该路径到路由数组中
        }else{
          this.transitionName='slide-left';
          routersArr.push(to.path);
        }
      }
      //存入本地sessionStorage,并转为字符串
      sessionStorage.setItem('routers',routersArr.join(','));
    }
  }
};
</script>

<style>
.child-view {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  transition: all 0.4s cubic-bezier(0.55, 0, 0.1, 1);
}
.slide-left-enter,
.slide-right-leave-active {
  opacity: 0;
  -webkit-transform: translate(100px, 0);
  transform: translate(100px, 0);
}
.slide-left-leave-active,
.slide-right-enter {
  opacity: 0;
  -webkit-transform: translate(-100px, 0);
  transform: translate(-100px, 0);
}
</style>

转载于:https://www.cnblogs.com/yzyh/p/10313306.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值