过渡的类名
在进入/离开的过渡中,会有 6 个 class 切换。
1. v-enter
:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。
2. v-enter-active
:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。
3. v-enter-to
: 2.1.8版及以上 定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时 v-enter
被移除),在过渡/动画完成之后移除。
4. v-leave
: 定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。
5. v-leave-active
:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。
6. v-leave-to
: 2.1.8版及以上 定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave
被删除),在过渡/动画完成之后移除。
例:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link rel="stylesheet" href="">
<style>
.v-enter,
.v-leave-to {
opacity: 0;
transform: translateX(200px);
}
.v-enter-active,
.v-leave-active {
transition: all .6s ease;
}
</style>
</head>
<body>
<div id="app">
<input type="button" value="按钮" @click='flag=!flag'>
<transition>
<p v-show='flag'>{{ msg }}</p>
</transition>
</div>
<script src="js/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
flag: false,
msg: 'hello world!!!'
}
})
</script>
</body>
</html>
应用动画的步骤:
①. 用<transition>
标签将需要动画的元素包裹起来;
②. 定义v-enter, v-leave-to
以及v-enter-active,v-leave-active
两组样式
注意:对于这些在过渡中切换的类名来说,如果你使用一个没有名字的
<transition>
,则v-
是这些类名的默认前缀。如果你使用了<transition name="my-transition">
,那么v-enter
会替换为my-transition-enter
,即你起的name
是什么,v
就变成什么。
例:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<link rel="stylesheet" href="">
<style>
.v-enter,
.v-leave-to {
opacity: 0;
transform: translateX(200px);
}
.v-enter-active,
.v-leave-active {
transition: all .6s ease;
}
.my-enter,
.my-leave-to {
opacity: 0;
transform: translateY(200px);
}
.my-enter-active,
.my-leave-active {
transition: all .6s ease;
}
</style>
</head>
<body>
<div id="app">
<input type="button" value="按钮" @click='flag=!flag'>
<input type="button" value="按钮" @click='flag2=!flag2'>
<transition>
<p v-show='flag'>{{ msg }}</p>
</transition>
<transition name='my'>
<p v-show='flag2'>{{ msg }}</p>
</transition>
</div>
<script src="js/vue.js"></script>
<script>
var vm = new Vue({
el: '#app',
data: {
flag: false,
flag2: false,
msg: 'hello world!!!'
}
})
</script>
</body>
</html>
网友评论