vue3路由切换过渡动画实现(含有一些坑)

news2025/1/15 20:55:16

今天写项目的准备收尾的时候,想给路由组件切换给一个过渡效果。在开发的过程中遇到一些坑。

1.Vue2和Vue3区别

vue2

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

后面就是写样式

Vue3

<router-view v-slot="{ Component }">
  <transition name="fade">
   <keep-alive>
      <component :is="Component" />
   </keep-alive>
  </transition>
</router-view>


后面就是写样式

vue3必须要这样格式套住,不然又bug

官网文档

后面会给一个完整版。

2.开始踩坑

我一开始的写法:

<router-view v-slot="{ Component }">
   <transition name="fade">
      <keep-alive>
       <component :is="Component" />
     </keep-alive>
  </transition>
</router-view>

css部分:

/* 路由切换动画 */
/* fade-transform */
.fade-leave-active,
.fade-enter-active {
  transition: all 0.5s;
}

/* 可能为enter失效,拆分为 enter-from和enter-to */
.fade-enter-from {  
  opacity: 0;
  transform: translateY(-30px);
}
.fade-enter-to { 
  opacity: 1;
  transform: translateY(0px);
}

.fade-leave-to {
  opacity: 0;
  transform: translateY(30px);
}

注意:<transform>标签name是 fade,那么动画类名前缀也是fade,例如:fade-leave,fade-enter

运行一看:

 路由直接不展示了。还报了警告。然后看了一篇文章说是transition包裹必须是一个根标签,跟着他说的在 <component :is="Component" />给一个div包裹

修改后:

<router-view v-slot="{ Component }">
  <transition name="fade">
   <keep-alive>
        <div>
          <component :is="Component" />
        </div>
   </keep-alive>
  </transition>
</router-view>

运行一看,警告没有了,但是我的过度动画没有了。

因为Vue3官网已经说了,每个组件不用像Vue2一样用一个div包裹。我写的vue3组件都是没有div包裹的都是直接写的。

 我刚才用div包裹<component :is="Component" />是没有警告,但是没有,于是我就不用div包裹了。给每一个路由组件手动添加一个根标签div

 然后这里撤回:

<router-view v-slot="{ Component }">
  <transition name="fade">
   <keep-alive>
      <component :is="Component" />
   </keep-alive>
  </transition>
</router-view>

到最后就有动画效果了。

但是bug:就是切换路由的时候,第一路由还没离开消失完,第二路由就来了

解决这个很简单,在transition标签加一个mode属性,值看个人要哪一个。

transition 标签元素有一个mode属性,用于设置动画过渡效果。

默认是同时进行元素的进入和离开。元素绝对定位position: absolute;不会有错位问题。
in-out,新元素先进行过渡进入,完成之后当前元素过渡离开。
out-in,当前元素先过渡离开,完成之后新元素过渡进入。

<router-view v-slot="{ Component }">
  <transition name="fade" mode="out-in">
     <keep-alive>
      <component :is="Component" />
    </keep-alive>
  </transition>
</router-view>

这样就可以了。

但是还有一个地方要注意:

在transition标签还有一个appear属性

是否对初始渲染使用过渡。 * 默认:false

官网连接

如果出现过度动画不生效,可以加这个属性看看,我这里不加也可以生效,大家最好加一下。

3.完整代码

<router-view v-slot="{ Component }">
   <transition name="fade" mode="out-in" appear>
      <keep-alive>
         <component :is="Component" />
      </keep-alive>
   </transition>
</router-view>




/* 路由切换动画 */
/* fade-transform */
.fade-leave-active,
.fade-enter-active {
  transition: all 0.5s;
}

/* 可能为enter失效,拆分为 enter-from和enter-to */
.fade-enter-from {  
  opacity: 0;
  transform: translateY(-30px);
}
.fade-enter-to { 
  opacity: 1;
  transform: translateY(0px);
}

.fade-leave-to {
  opacity: 0;
  transform: translateY(30px);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/110016.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

旅游网项目

技术选型 JAVA版本&#xff1a;JDK11数据库&#xff1a;Mysql5.7Navicat后端框架&#xff1a;SpringBoot2.7.1 SpringMVC Mybatis-Plus3.5.0权限控制&#xff1a;SpringSecurity前端框架&#xff1a;AdminLTE2模板引擎&#xff1a;Thymeleaf工具类&#xff1a;发邮件工具类、…

一分钟玩转RPA——word批量转pdf

大家好&#xff0c;我是无用兄&#xff0c;批量word转pdf文件我们在工作中有时会经常遇到&#xff0c;网上也有很多工具&#xff0c;有收费的也有免费的&#xff0c;今天我们主要介绍下如何用影刀RPA工具只需要四条指令就可以完成这个工作&#xff0c;而且后续的使用是完全免费…

解决原 Unique Key 模型存在的问题

为了解决原 Unique Key 模型存在的问题&#xff0c;以更好的满足业务场景的需求&#xff0c;我们决定对 Unique Key 模型进行优化&#xff0c;针对读写效率问题的优化方案展开了详细的调研。 关于以上问题的解决方案&#xff0c;业内已经有了较多的探索。代表性的有三类&#…

数据库MYSQL及MYSQL ODBC

文章目录MYSQL下载安装MYSQL操作赋权添加ODBC数据源手动配置命令行配置Wdac: Add-OdbcDsnodbcconf.exe其它方案64位机器上调用32位ODBCwarning & problemString data, right truncation迁移sql server数据库到mysqlSQL SERVER链接mysqlwarningMysql TIMESTAMP VS DATETIMEM…

【设计模式】我终于读懂了装饰者模式。。。

文章目录&#x1f451;星巴克咖啡订单项目&#xff08;咖啡馆&#xff09;&#x1f452;装饰者模式定义&#x1f45e; 装饰者模式解决星巴克咖啡订单&#x1f302;装饰者模式下的订单&#xff1a;2 份巧克力一份牛奶的 LongBlack&#x1f4bc;下面我们跟着代码debug下去看一下&…

五、Kubernetes命令行工具 (kubectl)

1、概述 kubectl 是 Kubernetes 集群的命令行工具&#xff0c;通过 kubectl 能够对集群本身进行管理&#xff0c;并能 够在集群上进行容器化应用的安装部署。 2、语法 使用以下语法从终端窗口运行 kubectl 命令&#xff1a; kubectl [command] [TYPE] [NAME] [flags] 其中 …

PPCNN

这是细粒度特征提取和定位用于目标检测&#xff0c;近年来&#xff0c;深度卷积神经网络在计算机视觉上取得了优异的性能。深度卷积神经网络以精确地分类目标信息而闻名&#xff0c;并采用了简单的卷积体系结构来降低图层的复杂性&#xff0c;基于深度卷积神经网络概念设计的VG…

二叉树遍历

题目&#xff1a;二叉树的遍历 解法一&#xff1a;递归遍历&#xff0c;也是实现起来&#xff0c;最简单的方式。 写递归算法的核心三大要素&#xff1a;1.确定递归函数的参数 和 返回值。都是关键的信息。 2.确定终止条件。用心思考&#xff0c;到底啥才是本次递归终止的条件…

keras的模型可视化

参考&#xff1a;https://blog.csdn.net/chenxy_bwave/article/details/121955478 from tensorflow.keras import utils utils.plot_model(model, model_cnnppt.png,show_shapesTrue,show_dtypeTrue,show_layer_namesTrue)两行代码&#xff0c;效果惊艳。 但是这样也有一个弊…

酒店好评回复模板

网评是酒店线上口碑的体现&#xff0c;好评率高可以提高客户入住率&#xff0c;而酒店对网评的回复也很关键&#xff0c;酒店要重视好评的回复。 前言 住酒店存在于在我们日常生活的很多场景中&#xff0c;比如&#xff1a;旅游入住酒店、出差办公也会入住酒店等等&#xff0c…

【NumPy 数组过滤、NumPy 中的随机数、NumPy ufuncs】

&#x1f935;‍♂️ 个人主页老虎也淘气 个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f44d;&#x1f3fb; 收藏…

rabbitmq基础5——集群节点类型、集群节基础运维,集群管理命令

文章目录一、集群节点类型1.1 内存节点1.2 磁盘节点二、集群基础运维2.1 剔除单个节点2.1.1 集群正常踢出正常节点2.1.2 服务器异常宕机踢出节点2.1.3 集群正常重置并踢出节点2.2 集群节点版本升级2.3 集群某单节点故障恢复2.3.1 机器硬件故障2.3.2 机器掉电2.3.3 网络故障2.3.…

WPF使用快捷键 资源 输入快捷键与资源绑定 资源绑定调用操作 或keydown处理

winform直接&D就OK,还是没有winform方便。 方式1&#xff1a; 资源 输入快捷键与资源绑定 资源绑定调用操作 <Window.Resources><RoutedUICommand x:Key"download" Text"download"/></Window.Resources><Window.InputBindings>…

现在的时代不是互联网时代的延续,因为其底层逻辑已经改变

拥抱实体经济&#xff0c;绝对是当下互联网玩家们的首要选择。无论是头部的互联网企业来讲&#xff0c;还是新生的互联网玩家而言&#xff0c;它们都不约而同地将关注的焦点聚焦在了这样一个方向上。   透过这一点&#xff0c;我们可以非常明显地感受到&#xff0c;一个全新的…

Rust 语言的全链路追踪库 tracing

在一个应用程序或库的开发过程中&#xff0c;除了其本身的逻辑以外&#xff0c;开发人员还需要做很多额外的工作&#xff0c;以保证编写的代码可以正确的运行&#xff0c;或者在出错时可以快速定位到错误的位置以及原因&#xff0c;这就需要引入一些额外的工具&#xff0c;trac…

Verilog刷题HDLBits——Exams/ece241 2014 q5a

Verilog刷题HDLBits——Exams/ece241 2014 q5a题目描述代码结果题目描述 You are to design a one-input one-output serial 2’s complementer Moore state machine. The input (x) is a series of bits (one per clock cycle) beginning with the least-significant bit of …

HistoSeg:具有多损失函数的快速注意,用于数字组织学图像中的多结构分割

摘要 大多数分割网络都是基于编解码的网络结构&#xff0c;也利用了复杂的注意力模块或者Trasnsformer模块。但是这些网络在捕获相关的局部和全局特征时还不够准确。无法在多个尺度上进行准确的边界检测。因此&#xff0c;我们提出了一个编码器-解码器网络&#xff0c;快速注意…

【C++11】可变参数和lambda表达式

目录 1.可变参数模板 1.1可变参数的模板 1.2参数包的展开方式 1.21递归函数展开参数包 1.3逗号表达式展开参数包 2.STL库中的emplace相关接口 3.lambda表达式 3.1lambda的引入 3.2lambda的介绍 列表使用 lambda 表达式捕获 lambda实现swap函数 lambda表达式之间…

开放路径最短优先协议OSPF(计算机网络)

​ 目录 开放最短路径优先(Open Shortest Path First) 链路状态算法 链路状态算法 链路状态数据库(link-state database) OSPF的分组类型 类型1&#xff1a;问候(Hello)分组 类型2&#xff1a;数据库描述(Database Description)分组 类型3&#xff1a;链路状态请求(Li…

Adobe 2023全家桶12月版本更新

Adobe 2023全家桶12月版本更新 Adobe 2023 发布有两个多月了&#xff0c;您们用上了新版本吗&#xff1f;12月又迎来了一次小版本更新&#xff0c;主要更新还是对已知问题的修复&#xff0c;当然也少不了一些新功能更新。 最新的Adobe2023全家桶&#xff0c;有更强大的内容&am…