路由动画切换( 左移,右移)

简介: 路由动画切换( 左移,右移)

举例:vue项目

1、在路由表中修改

在vue中路由表 定义meta属性 index 值 用index值来判断是左移还是右移



2、 在App入口文件处

<router-view v-slot="{ Component }">
      <transition :name="transitionName" mode="out-in">
        <component :is="Component" />
      </transition>
    </router-view>
 data() {
    return {
      // schema: "MainFade",
      transitionName: "slide-left",
    };
  },
watch: {
    //使用watch 监听$router的变化
    $route(to, from) {
      //如果to索引大于from索引,判断为前进状态,反之则为后退状态
      if (to.meta.index > from.meta.index) {
        //设置动画名称
        this.transitionName = "slide-left";
      } else {
        this.transitionName = "slide-right";
      }
    },
  },
//css样式 
.slide-right-enter-active,
.slide-right-leave-active,
.slide-left-enter-active,
.slide-left-leave-active {
  will-change: transform;
  transition: all 500ms;
  position: absolute;
}
.slide-right-enter {
  opacity: 0;
  transform: translate3d(-100%, 0, 0);
}
.slide-right-leave-active {
  opacity: 0;
  transform: translate3d(100%, 0, 0);
}
.slide-left-enter {
  opacity: 0;
  transform: translate3d(100%, 0, 0);
}
.slide-left-leave-active {
  opacity: 0;
  transform: translate3d(-100%, 0, 0);
}

vue完整App

<template>
  <div>
    <router-view v-slot="{ Component }">
      <transition :name="transitionName" mode="out-in">
        <component :is="Component" />
      </transition>
    </router-view>
  </div>
</template>
<script>
export default {
  name: "AppTestApp",
  data() {
    return {
      // schema: "MainFade",
      transitionName: "slide-left",
    };
  },
  mounted() {},
  methods: {},
  watch: {
    //使用watch 监听$router的变化
    $route(to, from) {
      //如果to索引大于from索引,判断为前进状态,反之则为后退状态
      console.log(to, "to");
      console.log(from, "from");
      if (to.meta.index > from.meta.index) {
        //设置动画名称
        this.transitionName = "slide-left";
      } else {
        this.transitionName = "slide-right";
      }
    },
  },
};
</script>
<style>
.slide-right-enter-active,
.slide-right-leave-active,
.slide-left-enter-active,
.slide-left-leave-active {
  will-change: transform;
  transition: all 500ms;
  position: absolute;
}
.slide-right-enter {
  opacity: 0;
  transform: translate3d(-100%, 0, 0);
}
.slide-right-leave-active {
  opacity: 0;
  transform: translate3d(100%, 0, 0);
}
.slide-left-enter {
  opacity: 0;
  transform: translate3d(100%, 0, 0);
}
.slide-left-leave-active {
  opacity: 0;
  transform: translate3d(-100%, 0, 0);
}
</style>

如果是其他框架上中(React,umi,…)

逻辑都是一样的

实现思路

1、 在router路由表中定义meta属性中的index,

2、在入口文件处判断to和from中的index值大小,来进行路由动画的切换

相关文章
|
JSON 前端开发 API
fetchEventSource源码解析
fetchEventSource源码解析
3100 1
|
移动开发 JavaScript 前端开发
HLS错误处理
hls.js是一个JavaScript库,可实现HTTP Live Streaming客户端。 它依靠HTML5视频和MediaSource扩展进行播放。
5772 0
|
JavaScript 应用服务中间件 nginx
vuecli3打包项目上线之后报错怎么使用本地的sourcemap文件定位调试?
vuecli3打包项目上线之后报错怎么使用本地的sourcemap文件定位调试?
351 0
|
8月前
|
弹性计算 监控 并行计算
如何在阿里云上部署满血版DeepSeek
在阿里云部署“满血版”DeepSeek模型,需合理配置硬件与软件环境。首先注册阿里云账号并申请GPU计算型ECS实例(推荐V100/A10/A100),配置安全组规则。接着安装NVIDIA驱动、CUDA及Python依赖库,下载DeepSeek模型权重并克隆代码仓库。通过FastAPI编写推理接口,使用Uvicorn运行服务,支持反向代理与HTTPS配置。最后优化显存、监控性能,确保高效稳定运行。
如何在阿里云上部署满血版DeepSeek
|
9月前
|
人工智能 自然语言处理 测试技术
Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
Potpie.ai 是一个基于 AI 技术的开源平台,能够为代码库创建定制化的工程代理,自动化代码分析、测试和开发任务。
790 19
Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
|
前端开发 UED 开发者
React.lazy()与Suspense:实现按需加载的动态组件——深入理解代码分割、提升首屏速度和优化用户体验的关键技术
【8月更文挑战第31天】在现代Web应用中,性能优化至关重要,特别是减少首屏加载时间和提升用户交互体验。React.lazy()和Suspense组件提供了一种优雅的解决方案,允许按需加载组件,仅在需要渲染时加载相应代码块,从而加快页面展示速度。Suspense组件在组件加载期间显示备选内容,确保了平滑的加载过渡。
433 0
|
算法 开发者
代码与哲学的交织:探索软件开发中的哲理
【10月更文挑战第17天】 在数字化时代,软件开发不仅仅是技术的堆砌,更是智慧与哲学的碰撞。本文通过深入浅出的方式,探讨了编程中蕴含的哲学思想,如迭代思维、模块化设计以及错误处理的艺术。我们将一起思考如何将这些哲学理念融入日常开发,以提升我们的技术深度和广度,让代码不仅是冰冷的逻辑,而是充满智慧的艺术品。
188 5
Exception in thread "main" java.lang.IllegalArgumentException: U+6570 ('.notdef') is not available in the font Helvetica-Bold, encoding: WinAnsiEncoding 问题解决
【5月更文挑战第26天】Exception in thread "main" java.lang.IllegalArgumentException: U+6570 ('.notdef') is not available in the font Helvetica-Bold, encoding: WinAnsiEncoding 问题解决
961 2
echarts如何设置滚动条(dataZoom),实现横向或纵向滚动
echarts如何设置滚动条(dataZoom),实现横向或纵向滚动
echarts如何设置滚动条(dataZoom),实现横向或纵向滚动
Exception in thread "main" java.lang.IllegalArgumentException: U+6570 ('.notdef') is not available in the font Helvetica-Bold, encoding: WinAnsiEncoding 这个问题如何解决
【6月更文挑战第19天】Exception in thread "main" java.lang.IllegalArgumentException: U+6570 ('.notdef') is not available in the font Helvetica-Bold, encoding: WinAnsiEncoding 这个问题如何解决
2729 2