开发者学堂课程【Vue.js 入门与实战:动画-使用过渡名实现动画】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/586/detail/8164
动画-使用过渡名实现动画
一、Vue 中的动画
Vue 中的动画的功能:
淡入淡出,位置简单位移,透明的渐变
为什么要有动画:
动画能够提高用户的体验,帮助用户更好的理解页面中的功能,本质目的不是为了效果好看,而是帮助用户理解页面功能
完整动画又进入把动画分成了进入和离开两个部分
进入时:
透明的0变为透明的1,进入之前状态透明的为0,v-enter 代表进入元素的起始状态,即初始样式,v-enter-to 代表动画进入完成之后的结束状态,起始状态到结束状态中间有一段时间,时间段为 v-enter-active,进入状态有 v-enter 和 v-enter-to两个时间点和一个时间段
离开时:
半场动画,分为即将离开之前的起始状态 v-leave,离开之后的终止状态为 v-learv-to,从起始到离开的时间段为 v-leave-active
总结:
进入完成之后与即将离开之前状态是一致的,进入之前和离开之后两个状态也是较为相似,相似的可以写为一组
在进入/离开的过渡中,会有6个 class 切换。
1.v-enter:定义进入过渡的开始状态。在元素被插入时生效,在下一个帧移除。
2.enter-active:定义过渡的状志。在元素整个过渡过程中作用,在元素被插人时生效,在transition/animation完成之后移除。这个类可以被用来定义过渡的过程时间,延迟和曲线函数。
3.enter-to:2.1.8版及以上定义进入过渡的结東状态。在元素被插入一帧后生效(于此同时v-enter被删除),在 transition / animation 完成之后移除。
4.v-leave:定义离开过渡的开始状态,在离开过渡被触发时生效,在下一个帧移除。
5.v-leave-active:定义过渡的状态。在元素整个过渡过程中作用,在离开过渡被触发后立即生效,在 transition / animation 完成之后移除。这个类可以被用来定义过渡的过程时间,延迟和曲线函数。
6.v-leave-to:2.1.8版及以上定义离开过渡的结束状态。
在离开过渡被触发一帧后生效(于此同时 v-leave 被删除),在 transition / animation 完成之后移除。
对于这些在 enter/ leave 过渡中切换的类名,V- 是这些类名的前缀。使用可以重置前缀,比如 v-enter 替换为 my-transition-enter.
v-enter-active 和 v-leave-active 可以控制进入离开过渡的不同阶段,在下面章节会有个示例说明。
二、Vue 动画案例
1. 不使用动画
创建02.动画-不使用动画.Html<!DOCTYPE html><html lang "en">
<head>
<meta charset="UPE-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src= "./lib/vue-2.4.0.js"></script>
</head>
<body>
<div id="app">
//构建按钮,设置点击事件,点击false变为true
<input type="button" value="toggle" eclick="flag=!flag">
<!--需求: 点击按钮,让h3显示,再点击让h3隐藏-->
<h3 v-if=”flase”>这是一个H3</h3>
</div>
<script>
//创建vue实例,得到ViewModelvar
vm = new vue ({
el: 'app',
data: {
//在data上构建标识符,默认隐藏
Flag:false
},
methods: {}
});
</ script>
运行结果:
2. 过渡的类名实现动画
创建03.动画-使用过渡类名实现动画.html
<!DOCTYPE html><html lang "en">
<head>
<meta charset="UPE-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src= "./lib/vue-2.4.0.js"></script>
//第二步:自定义构建两种样式来控制transistion内部的元素控制动画
<style>
/*v-enter【这是一个时间点】是进入之前,元素的起始状态,此时还没有开始进入*/
/*v-leave-to[这是一个时间点]是动画离开之后,离开的终止状态,此时,元素动画已经结束了*/
/*这是第一组*/
.v-enter ,
.v-leave-to{
Opacity:0;
}
/*第二组*/
*v-enter-active【入场动画的时间段】*/
/* v-leave-active【离场动画的时间段】*/
.v-enter-active,
.v-leave-active {
//设置动画耗费多少毫秒,控制哪些元素实现
Transition:all 0.4s ease;
}
</style>
</head>
<body>
<div id="app">
//构建按钮,设置点击事件,点击false变为true
<input type="button" value="toggle" eclick="flag=!flag">
<!--需求: 点击按钮,让h3显示,再点击让h3隐藏-->
//第一步:使用transition元素把需要被动画控制的元素包裹起来,transition是vue官方提供的元素
<transition>
<h3 v-if=”flase”>这是一个H3</h3>
</transition>
</div>
<script>
//创建vue实例,得到ViewModelvar
vm = new vue ({
el: 'app',
data: {
//在data上构建标识符,默认隐藏
Flag:false
},
methods: {}
});
</script>
运行结果:
动画是渐渐的进入和离开的样式
可以在进入之前添加位移
<style>
.v-enter ,
.v-leave-to{
Opacity:0;
Transform:translateX(150px);
}
</style>
运行结果:
进入离开时后位置移动。
总结:
过渡类型实现动画写出两组类即可