初识 Vue(24)---(Vue 中同时使用过渡和动画)

28 篇文章 8 订阅
22 篇文章 1 订阅
本文介绍了如何在 Vue 中同时使用过渡和动画,确保元素在初次出现时也能有动画效果。通过调整 CSS3 动画和 transition 的配合,解决时间长度不一致导致的冲突,并展示了如何自定义过渡时长,包括入场和离场的不同时长。
摘要由CSDN通过智能技术生成

Vue 中同时使用过渡和动画

在上篇博客 《Vue 中使用 animate.css 库》基础上开始这篇博客

在上篇博客中,完成了 引入 animate.css 库 且实现动画的效果,但发现,在刚开始时元素并没有动画效果

若想让元素刚开始时也具备动画效果,则

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Vue 中同时使用过渡和动画</title>
	<script src='./vue.js'></script>
	<link rel="stylesheet" href="../css/animate.css" />
	
</head>
<body>
	<div id ="root">
		<transition name="fade"
			appear
			enter-active-class="animated swing"
			leave-active-class="animated shake"
			appear-active-class="animated swing">
			<div v-if="show">hello world</div>
		</transition>

		<button @click="handleClick">切换</button>

	</div>
	<script>
		var vm = new Vue({
			el:'#root',
			data: {
				show:true
			},
			methods:{
				handleClick: function(){
					this.show = !this.show
				}
			}
		})
	</script>
</body>
</html>

在刚开始时就会有动画效果

输出:上下抖动---正常--- 左右抖动---消失---上下抖动---正常

                  

引入 animate.css 库 实质还是 @keyframe(CSS3) 的形式,如果想将其和  过渡效果 同时展现出来,则

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Vue 中同时使用过渡和动画</title>
	<script src='./vue.js'></script>
	<link rel="stylesheet" href="../css/animate.css" />
	<style>
		.fade-enter,
		.fade-leave-to{
			opacity: 0;
		}
		
		.fade-enter-active,
		.fade-leave-active{
			transition: opacity 3s;
		}
	</style>
</head>
<body>
	<div id ="root">
		<transition name="fade"
			appear
			enter-active-class="animated swing fade-enter-active"
			leave-active-class="animated shake fade-leave-active"
			appear-active-class="animated swing">
			<div v-if="show">hello world</div>
		</transition>

		<button @click="handleClick">切换</button>

	</div>
	<script>
		var vm = new Vue({
			el:'#root',
			data: {
				show:true
			},
			methods:{
				handleClick: function(){
					this.show = !this.show
				}
			}
		})
	</script>
</body>
</html>

输出:上下抖动---正常--- 左右抖动---(逐渐)消失---上下抖动---(逐渐)正常

                  

但有个问题,设置 transition: opacity 3s;  是3秒;但知 swing 和 shake 都是 1秒;会导致冲突,则添加 type="transition",以较长的时间的时长为准

<div id ="root">
		
		<transition 
			type="transition"
			name="fade"
			appear
			enter-active-class="animated swing fade-enter-active"
			leave-active-class="animated shake fade-leave-active"
			appear-active-class="animated swing">
			<div v-if="show">hello world</div>
		</transition>

还可以自定义播放时长:  :duration="5000"    5秒

<div id ="root">
		
		<transition 
			:duration="5000"  
			name="fade"
			appear
			enter-active-class="animated swing fade-enter-active"
			leave-active-class="animated shake fade-leave-active"
			appear-active-class="animated swing">
			<div v-if="show">hello world</div>
		</transition>

复杂一些::duration="{enter:5000,leave:10000}"    入场5秒 ,离厂10秒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值