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

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

举例: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值大小,来进行路由动画的切换

相关文章
|
小程序 JavaScript
小程序动画animation向左移动效果
小程序动画animation向左移动效果
71 0
|
7月前
|
运维 安全 Devops
什么是安全左移,如何实现安全左移
传统软件开发面临安全挑战,如意识缺失、代码漏洞、第三方组件风险、配置管理问题及应对新型攻击能力不足。为改善现状,需采取安全左移策略,将安全措施提前至开发早期,与SDL结合,确保安全贯穿SDLC始终。安全左移面临计划制定、责任转移、工具选择等挑战,需通过规划、培训和选用合适工具应对。DevSecOps模式进一步将安全融入DevOps,提升开发效率和软件安全性,实现开发、安全和运维的协同。SDL与DevSecOps相辅相成,前者注重安全过程,后者强调安全文化与自动化。
316 1
什么是安全左移,如何实现安全左移
|
7月前
|
自然语言处理 IDE 测试技术
测试左移的方法
测试左移的方法
|
算法 测试技术 C++
C++算法:最少翻转操作数
C++算法:最少翻转操作数
|
编译器
【逻辑位移和算数位移】
【逻辑位移和算数位移】
|
算法
怎么理解优先级翻转
怎么理解优先级翻转
123 0
|
算法
为什么我们总是习惯采用:向下调整来建堆?(向上建堆和向下建堆的区别)
为什么我们总是习惯采用:向下调整来建堆?(向上建堆和向下建堆的区别)
155 0
|
Java
位移运算---为何负数不断地无符号向右移动的最小值是1呢?
位移运算---为何负数不断地无符号向右移动的最小值是1呢?
241 0
位移运算---为何负数不断地无符号向右移动的最小值是1呢?
|
Java Python
进制的底层逻辑规则 左移<< 右移>> 取反加一 补位原则 正负数 相反数等 文章中含验证源码
进制的底层逻辑规则 左移<< 右移>> 取反加一 补位原则 正负数 相反数等 文章中含验证源码
155 0
进制的底层逻辑规则 左移<< 右移>> 取反加一 补位原则 正负数 相反数等 文章中含验证源码