Vue中动画与过渡的使用教程

 更新时间:2023年01月09日 09:39:38   作者:酷尔。  
最近在写vue的一个项目要实现过渡的效果,虽然vue动画不是强项,库也多,但是基本的坑还是得踩扎实,下面这篇文章主要给大家介绍了关于Vue中实现过渡动画效果的相关资料,需要的朋友可以参考下

前言

本篇博客将会介绍如何在Vue中使用动画效果。

一、回忆css3中的动画

定义一个动画:

定义一个动画名为atguigu
@keyframes atguigu {
  from {
    transform: translateX(-100%);
  }
  to {
    transform: translateX(0px);
  }
}

使用动画

h1 {
  text-align: center;
  background-color: rgba(0, 217, 255, 0.897);
}
将动画使用到come类中
.come {
  animation: atguigu 0.5s linear;
}
将动画atguigu的相反使用到to类中
.to {
  animation: atguigu 0.5s linear reverse;
}

animation: name duration timing-function delay iteration-count direction fill-mode;

二、Vue中单标签使用动画

vue中定义动画使用,需要将响应标签放入标签 <transition></transition>中

若有多个元素需要过度,则需要使用:<transition-group>,且每个元素都要指定key值。

1.默认使用方法

这种方法只适用于一个插件只有一个动画效果,因为没有办法对动画进行区分

元素进入的样式:

  • v-enter:进入的起点
  • v-enter-active:进入过程中
  • v-enter-to:进入的终点

元素离开的样式:

  • v-leave:离开的起点
  • v-leave-active:离开过程中
  • v-leave-to:离开的终点

可以结合以下一个实例使用:

<template>
	<div>
		<button @click="isShow = !isShow">显示/隐藏</button>
		//appear 属性加上会在页面加载时执行动画
		<transition appear>
			<h1 v-show="isShow">你好啊!</h1>
		</transition>
	</div>
</template>
<script>
	export default {
		name:'Hello',
		data() {
			return {
				isShow:true
			}
		},
	}
</script>
<style scoped>
	h1{
		background-color: orange;
	}
	//展示标签时激活
	.v-enter-active{
		animation: atguigu 0.5s linear;
	}
	//不展示标签时激活
	.v-leave-active{
		animation: atguigu 0.5s linear reverse;
	}
	@keyframes atguigu {
		from{
			transform: translateX(-100%);
		}
		to{
			transform: translateX(0px);
		}
	}
</style>

2.自定义使用方法

这种方法较为灵活,一个插件可以定义多个动画,并用定义的名字进行区分,用法如下:

<template>
	<div>
		<button @click="isShow = !isShow">显示/隐藏</button>
		//给标签指定一个名字
		<transition name="hello" appear>
			<h1 v-show="isShow">你好啊!</h1>
		</transition>
	</div>
</template>
<script>
	export default {
		name:'Hello',
		data() {
			return {
				isShow:true
			}
		},
	}
</script>
<style scoped>
	h1{
		background-color: orange;
	}
	//这里的写法有所改变,应为.name-enter-activate.....
	.hello-enter-active{
		animation: atguigu 0.5s linear;
	}
	.hello-leave-active{
		animation: atguigu 0.5s linear reverse;
	}
	@keyframes atguigu {
		from{
			transform: translateX(-100%);
		}
		to{
			transform: translateX(0px);
		}
	}
</style>

三、Vue中多标签实现动画效果

上面介绍到的transition只能用于包裹一个标签,如果包裹多个标签的话就会报错。如果想要包裹多个标签可以使用transition-group。除了使用定义的动画,还可以使用过渡效果实现动画。

具体的使用方法如下:

<template>
	<div>
		<button @click="isShow = !isShow">显示/隐藏</button>
		//里面的两个h1均由动画效果
		<transition-group name="hello" appear>
			<h1 v-show="!isShow" key="1">你好啊!</h1>
			<h1 v-show="isShow" key="2">尚硅谷!</h1>
		</transition-group>
	</div>
</template>
<script>
	export default {
		name:'Test',
		data() {
			return {
				isShow:true
			}
		},
	}
</script>
<style scoped>
	h1{
		background-color: orange;
	}
	//Vue 会在指定的时期,将相应的动画效果展示出来,我们只用这样写即可。
	/* 进入的起点、离开的终点 */
	.hello-enter,.hello-leave-to{
		transform: translateX(-100%);
	}
	/* 进入的终点、离开的起点 */
	.hello-enter-to,.hello-leave{
		transform: translateX(0);
	}
	.hello-enter-active,.hello-leave-active{
		transition: 0.5s linear;
	}
</style>

四、使用第三方动画

市面上有许多优秀的动画库,我们在使用的时候只需进行一些简单的配置就可以使用。

下面有一个案例,是使用的animate.css动画库可以参考一下:

<template>
	<div>
		<button @click="isShow = !isShow">显示/隐藏</button>
		<transition-group 
			appear
			//下面三行为官网给出的配置
			name="animate__animated animate__bounce" 
			//这里就是显示组件跟隐藏组件时的动画
			//等号后面的东西直接去官网找自己想要的效果然后把名称复制上去即可
			enter-active-class="animate__swing"
			leave-active-class="animate__backOutUp"
		>
			<h1 v-show="!isShow" key="1">你好啊!</h1>
			<h1 v-show="isShow" key="2">尚硅谷!</h1>
		</transition-group>
	</div>
</template>
<script>
	import 'animate.css'
	export default {
		name:'Test',
		data() {
			return {
				isShow:true
			}
		},
	}
</script>
<style scoped>
	h1{
		background-color: orange;
	}
</style>

到此这篇关于Vue中动画与过渡的使用教程的文章就介绍到这了,更多相关Vue动画与过渡内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue概念及常见命令介绍(1)

    Vue概念及常见命令介绍(1)

    这篇文章主要为大家详细介绍了Vue概念及常见命令,介绍了vue.js声明式渲染、双向绑定及常用指令,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 浅谈vue中组件绑定事件时是否加.native

    浅谈vue中组件绑定事件时是否加.native

    今天小编就为大家分享一篇浅谈vue中组件绑定事件时是否加.native,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 使用vue ant design分页以及表格分页改为中文问题

    使用vue ant design分页以及表格分页改为中文问题

    这篇文章主要介绍了使用vue ant design分页以及表格分页改为中文问题,具有很好的参考价值,希望对大家有所帮助。
    2023-04-04
  • Pinia入门学习之实现简单的用户状态管理

    Pinia入门学习之实现简单的用户状态管理

    Vue3虽然相对于Vue2很多东西都变了,但是核心的东西还是没有变,比如说状态管理、路由等,再Vue3中尤大神推荐我们使用pinia来实现状态管理,他也说pinia就是Vuex的新版本,这篇文章主要给大家介绍了关于Pinia入门学习之实现简单的用户状态管理的相关资料,需要的朋友可以参考下
    2022-11-11
  • vue-以文件流-blob-的形式-下载-导出文件操作

    vue-以文件流-blob-的形式-下载-导出文件操作

    这篇文章主要介绍了vue-以文件流-blob-的形式-下载-导出文件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • 一文快速学会阻止事件冒泡的4种方法(原生js阻止,vue中使用修饰符阻止)

    一文快速学会阻止事件冒泡的4种方法(原生js阻止,vue中使用修饰符阻止)

    冒泡就是事件开始是由最具体的元素接收,然后逐层向上级传播到较为不具体的元素,这篇文章主要给大家介绍了关于阻止事件冒泡的4种方法,文中介绍的方法分别是原生js阻止以及vue中使用修饰符阻止的相关资料,需要的朋友可以参考下
    2023-12-12
  • Vue3 setup中使用$refs的方法详解

    Vue3 setup中使用$refs的方法详解

    在 Vue 3 中的 Composition API 中,$refs 并不直接可用于 setup 函数,但是实际工作中确实有需求,那么该如何解决呢,本文为大家整理了两个方案,希望对大家有所帮助
    2023-08-08
  • Vue+Element树形表格实现拖拽排序示例

    Vue+Element树形表格实现拖拽排序示例

    本文主要介绍了Vue+Element树形表格实现拖拽排序示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • vue如何实现Toast轻提示

    vue如何实现Toast轻提示

    这篇文章主要介绍了vue如何实现Toast轻提示,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue前端如何向后端传递参数

    vue前端如何向后端传递参数

    这篇文章主要介绍了vue前端如何向后端传递参数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06

最新评论