0

0

Vue3中如何实现过渡动画?组件和动画库方法解析

青灯夜游

青灯夜游

发布时间:2022-02-15 19:21:39

|

4205人浏览过

|

来源于掘金社区

转载

vue中如何实现过渡动画?下面本篇文章给大家介绍一下在vue3中实现过渡动画的两种方法(transition组件和动画库),希望对大家有所帮助!

Vue3中如何实现过渡动画?组件和动画库方法解析

在实际开发中,为了增加用户体验,经常会使用到过渡动画,而过渡动画在CSS中是通过transitionanimation实现的。而在Vue中,Vue本身中内置了一些组件和API可以帮助我们方便的实现过渡动画效果;接下来我们就学习一下。

Vue的transition组件

Vue中中提供了transition组件,该组件可以在下列情况之一的情况下,为元素自动添加进入/离开的过渡效果:

  • 使用animation条件渲染
  • 使用transition条件展示
  • 动态组件
  • 组件根节点

使用方式也比较简单,需要将需要动画展示的组件或者元素使用v-if组件包裹即可,然后定义一组v-show。【相关推荐:vue.js视频教程

立即学习前端免费学习笔记(深入)”;

过渡demo

如下代码展示了组件的基本用法:





代码的运行结果如下图所示:

Vue3中如何实现过渡动画?组件和动画库方法解析

上面使用的一些class,他们的含义如下所示:

  • :定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。
  • class:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。
  • v-enter-from:定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时 v-enter-active 被移除),在过渡/动画完成之后移除。
  • v-enter-to:定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。
  • v-enter-from:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。
  • v-leave-from:离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave-active 被移除),在过渡/动画完成之后移除。

下图是Vue文档中的一张图,完美解释了整个流程

1.gif

class的命名规则

v-leave-to组件的v-leave-from名称并不是必须以作为前缀的,其实我们可以自定义前缀,只需要添加一个class属性,例如v-,那么所有的前缀全部变成了name

使用animation

前面我们使用了属性实现了组件进入和离开的过渡效果,现在我们可以使用ywz-属性实现,示例代码如下:


  

transition

/* 离开和进入过程中的样式 */
.v-enter-active,
.v-leave-active {
  /* 添加过渡动画 */
  transition: opacity 0.5s ease;
}

代码运行结果如下:

2.gif

过渡模式

先看一个问题,当动画在两个元素之间切换的时候,会出现一个问题,复现这个问题的代码如下:





运行效果如下:

Shakespeare
Shakespeare

一款人工智能文案软件,能够创建几乎任何类型的文案。

下载

3.gif

我们可以看到,在一瞬间两个组件是同时存在的,有的时候我们不需要这种效果,那么我们需要设置animation组件的过渡模式,也就是css属性,它包含三个值:

  • :新元素与当前元素同时进行。
  • mode:新元素先进行进入过渡,完成之后当前元素过渡离开。
  • default:当前元素先进行离开过渡,完成之后新元素过渡进入。

了解这个属性之后,我们将代码修改一下,修改后如下:


  
  @@##@@

现在的运行结果如下:

Vue3中如何实现过渡动画?组件和动画库方法解析

appear属性

in-out组件的out-in属性用于开启手册渲染的动画,它接受一个布尔值,示例代码如下:


  @@##@@

4.gif

animate.css库的使用

如果我们在实际的开发中自己去一个一个的编写这些动画序列,那么效率是比较低下的,所以我们经常会用到一些动画库,最常见的就是

现在我们就来看那一下如何在Vue中使用appear

  • 安装animate.css

npm i animate.css
  • 引入animate.css

// main.jsimport 'animate.css'

使用动画序列

.v-enter-active {
  animation: fadeInDown 0.5s;
}
.v-leave-active {
  animation: fadeOutDown 0.5s;
}

使用自定义过渡class

animate.css组件还提供了属性来自定义过渡animate.css,具体如下:

  • class
  • enter-from-class
  • enter-active-class
  • enter-to-class
  • leave-from-class

他们的优先级会高于普通的类名。


  @@##@@

写在最后

本篇文章介绍了过渡的基本使用,掌握Vue提供的leave-active-class组件配合leave-to-class可以轻松实现过渡动画。

除了单个组件的过渡外,Vue还提供了TransitionGroup组件,用于实现多个组件的过渡动画,我们以后介绍。

更多编程相关知识,请访问:编程视频!!

Vue3中如何实现过渡动画?组件和动画库方法解析5.gifVue3中如何实现过渡动画?组件和动画库方法解析6.gifVue3中如何实现过渡动画?组件和动画库方法解析

相关专题

更多
css
css

css是层叠样式表,用来表现HTML或XML等文件样式的计算机语言,不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

524

2023.06.15

css居中
css居中

css居中:1、通过“margin: 0 auto; text-align: center”实现水平居中;2、通过“display:flex”实现水平居中;3、通过“display:table-cell”和“margin-left”实现居中。本专题为大家提供css居中的相关的文章、下载、课程内容,供大家免费下载体验。

263

2023.07.27

css如何插入图片
css如何插入图片

cssCSS是层叠样式表(Cascading Style Sheets)的缩写。它是一种用于描述网页或应用程序外观和样式的标记语言。CSS可以控制网页的字体、颜色、布局、大小、背景、边框等方面,使得网页的外观更加美观和易于阅读。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

757

2023.07.28

css超出显示...
css超出显示...

在CSS中,当文本内容超出容器的宽度或高度时,可以使用省略号来表示被隐藏的文本内容。本专题为大家提供css超出显示...的相关文章,相关教程,供大家免费体验。

539

2023.08.01

css字体颜色
css字体颜色

CSS中,字体颜色可以通过属性color来设置,用于控制文本的前景色,字体颜色在网页设计中起到很重要的作用,具有以下表现作用:1、提升可读性;2、强调重点信息;3、营造氛围和美感;4、用于呈现品牌标识或与品牌形象相符的风格。

760

2023.08.10

什么是css
什么是css

CSS是层叠样式表(Cascading Style Sheets)的缩写,是一种用于描述网页(或其他基于 XML 的文档)样式与布局的标记语言,CSS的作用和意义如下:1、分离样式和内容;2、页面加载速度优化;3、实现响应式设计;4、确保整个网站的风格和样式保持统一。

605

2023.08.10

css三角形怎么写
css三角形怎么写

CSS可以通过多种方式实现三角形形状,本专题为大家提供css三角形怎么写的相关教程,大家可以免费体验。

560

2023.08.21

css设置文字颜色
css设置文字颜色

CSS(层叠样式表)可以用于设置文字颜色,这样做有以下好处和优势:1、增加网页的可视化效果;2、突出显示某些重要的信息或关键字;3、增强品牌识别度;4、提高网页的可访问性;5、引起不同的情感共鸣。

395

2023.08.22

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

23

2026.01.19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue3.x 工具篇--十天技能课堂
Vue3.x 工具篇--十天技能课堂

共26课时 | 1.4万人学习

Vue3.x 核心篇--十天技能课堂
Vue3.x 核心篇--十天技能课堂

共30课时 | 1.5万人学习

Vue3.x新特性篇--十天基础课堂
Vue3.x新特性篇--十天基础课堂

共20课时 | 1.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号