初识 Vue(22)---(Vue中CSS动画原理)

简介: Vue中CSS动画原理动画流程:(动画从无到有)1.在动画即将被执行的一瞬间,会往内部的 div 添加 两个 class 名字,分别是 fade-enter 和 fade-enter-active;2.

Vue中CSS动画原理

动画流程:(动画从无到有)

1.在动画即将被执行的一瞬间,会往内部的 div 添加 两个 class 名字,分别是 fade-enter 和 fade-enter-active;

2.当动画第一帧执行结束后,transition 标签分析知道这个 div 的动画效果,会在动画第二帧时做两件事:将之前添加的 fade-enter这个 class 标签去掉,再增加 fade-enter-to 这个标签;

3.动画继续执行,执行到结束的这一瞬间,Vue 会将之前添加的 fade-enter-active 和 fade-enter-to 去掉

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Vue中CSS动画原理</title>
	<script src='./vue.js'></script>
</head>
<body>
	<div id ="root">
		<transition name="fade">
			<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>

输出:点击 hello world 消失

  

以上述程序为例,当 div 被 transition 标签包裹时,会自动创建一个动画流程;在动画执行前,往 div 标签上添加 fade-enter 和 fade-enter-active 这两个 class 样式;

加入以下程序

<script src='./vue.js'></script>
	<style>
		.fade-enter{
			opacity: 0;
		}
		.fade-enter-active{
			transition: opacity 3s; 
		}
	</style>

输出:   经过 3S 浮现出来

fade-enter-active 在动画第一帧时才存在,执行到结束的这一瞬间  fade-enter-active 才会被去掉;故设置 transition:opacity;

对 opacity 进行 transition 监控,如果监控到 opacity 发生变化,则让其在 3 秒内缓慢变化;fade-enter 只在第一帧时存在,第二帧时就被移除。故结合二者来看,在第一帧时,画面处于隐藏状态(opacity:0),运行到第二帧时,fade-enter 被移除 ,这时,opacity 变为原来的默认值 1,画面要出现,fade-enter-active 中的 transition 监控到 opacity 发生变化,让其在 3 秒内完成变化,画面将在3 秒由无到有的浮现出来!

补充:fade-enter-active 和 fade-enter 中的前缀 fade 是 transition的 name 值,其默认值为 v

 

动画流程:(动画从有到无)

 

1.在动画即将被执行的一瞬间,会往内部的 div 添加 两个 class 名字,分别是 fade-leave 和 fade-leave-active;

2.当动画第一帧执行结束后,transition 标签分析知道这个 div 的动画效果,会在动画第二帧时做两件事:将之前添加的 fade-leave这个 class 标签去掉,再增加 fade-leave-to 这个标签;

3.动画继续执行,执行到结束的这一瞬间,Vue 会将之前添加的 fade-leave-active 和 fade-leave-to 去掉

 

再添加代码:

<style>
		.fade-enter{
			opacity: 0;
		}
		.fade-enter-active{
			transition: opacity 3s; 
		}
		.fade-leave-to{
			opacity: 0;
		}
		.fade-leave-active{
			transition: opacity 3s; 
		}
	</style>

输出:点击 3s 后隐藏,再点击 3s 后出现

          

fade-leave-active 在动画第一帧时才存在,执行到结束的这一瞬间  fade-leave-active 才会被去掉;故设置 transition:opacity;

对 opacity 进行 transition 监控,如果监控到 opacity 发生变化,则让其在 3 秒内缓慢变化;fade-leave-to 在第二帧时出现,最后时才被移除。故结合二者来看,在第一帧时,画面处于显示状态(opacity:1),运行到第二帧时,fade-leave 被移除 ,这时,opacity 变为 0,画面要隐藏,fade-leave-active 中的 transition 监控到 opacity 发生变化,让其在 3 秒内完成变化,画面将在3 秒由有到无的消失!

补充:v-if 和 v-show 都可以实现上述功能

Vue 中的 CSS 动画(过渡动画)实质:通过某一时刻自动的往一些标签上增加一些样式来实现的

 

目录
相关文章
|
25天前
|
JavaScript 算法 编译器
vue3 原理 实现方案
【8月更文挑战第15天】vue3 原理 实现方案
30 1
|
30天前
|
JavaScript 前端开发 API
【Vue 3】一个小巧玲珑的 Vue 组件切换动画库,开源且免费!!
【Vue 3】一个小巧玲珑的 Vue 组件切换动画库,开源且免费!!
【Vue 3】一个小巧玲珑的 Vue 组件切换动画库,开源且免费!!
|
7天前
|
缓存 JavaScript 容器
vue动态组件化原理
【9月更文挑战第2天】vue动态组件化原理
20 2
|
11天前
|
缓存 JavaScript 前端开发
[译] Vue.js 内部原理浅析
[译] Vue.js 内部原理浅析
|
10天前
|
JavaScript 前端开发 UED
Vue.js动画魔法:解锁流畅过渡,让每一次交互都成为用户心中的小确幸!
【8月更文挑战第30天】在Vue.js中,动画与过渡效果不仅是视觉点缀,更是提升用户体验的关键。通过流畅的动态效果,应用的互动性和吸引力得以增强,从而提高用户满意度和参与度。`&lt;transition&gt;`和`&lt;transition-group&gt;`组件结合CSS过渡,可轻松实现元素的进入、离开及列表变化动画。合理的性能优化,如使用硬件加速,能避免页面卡顿,确保动画既美观又高效。下面是一个简单的淡入淡出效果示例,展示了如何利用Vue.js实现平滑的动画过渡。总之,恰当的动画设计能显著提升应用的用户体验。
25 0
Vue.js动画魔法:解锁流畅过渡,让每一次交互都成为用户心中的小确幸!
|
10天前
|
JavaScript
Vue3数值动画(NumberAnimation)
该文档介绍了一个基于 Vue 的数值动画组件 `NumberAnimation`,提供了丰富的配置选项,如起始值、目标值、动画时长等,并支持自定义前缀、后缀及样式。通过简单的方法和事件,可以轻松控制动画的播放与停止。
Vue3数值动画(NumberAnimation)
|
21天前
|
JavaScript 前端开发 开发者
Vue学习之--------深入理解Vuex、原理详解、实战应用(2022/9/1)
这篇文章详细介绍了Vuex的基本概念、使用场景、安装配置、基本用法、实际应用案例以及注意事项,通过一个数字累加器的实战示例,帮助开发者深入理解Vuex的原理和应用。
|
24天前
|
前端开发 JavaScript
使用Vue+CSS实现汉堡图标过渡为叉号图标,有点意思
本文分享了如何使用Vue和CSS实现一个汉堡图标在点击时过渡为叉号图标的动画效果,并提供了详细的实现代码和效果演示。
46 0
使用Vue+CSS实现汉堡图标过渡为叉号图标,有点意思
|
25天前
|
JavaScript API
Vue学习之--------列表排序(ffilter、sort、indexOf方法的使用)、Vue检测数据变化的原理(2022/7/15)
这篇博客文章讲解了Vue中列表排序的方法,使用`filter`、`sort`和`indexOf`等数组方法进行数据的过滤和排序,并探讨了Vue检测数据变化的原理,包括Vue如何通过setter和数组方法来实现数据的响应式更新。
Vue学习之--------列表排序(ffilter、sort、indexOf方法的使用)、Vue检测数据变化的原理(2022/7/15)
|
25天前
|
JavaScript
Vue学习之--------列表渲染、v-for中key的原理、列表过滤的实现(2022/7/13)
这篇博客文章详细介绍了Vue中列表渲染的基础知识、`v-for`指令的使用、`key`的原理和列表过滤的实现。通过代码实例和测试效果,展示了如何遍历数组和对象、使用`key`属性优化渲染性能,以及如何实现列表的动态过滤功能。
Vue学习之--------列表渲染、v-for中key的原理、列表过滤的实现(2022/7/13)