transition
vue允许我们在显示隐藏元素以及创建元素过程中,添加过渡效果
transition元素(组件)是由vue提供的,可以为内部的元素添加过渡效果
过程演示
v-enter:过渡的初始状态(隐藏);在过渡开始前被添加,在过渡开始时会被移除
v-enter-to:过渡的结束状态(显示);在过渡开始时被添加,在过渡完成时会被移除
v-enter-active:这里包含了上面的v-enter、v-enter-to两个时间段,在这里可以对上半场过渡定义过渡时间、曲线等
v-leave:过渡的初始状态(显示);在过渡开始前被添加,在过渡开始时会被移除
v-leave-to:过渡的结束状态(隐藏);在过渡开始时被添加,在过渡完成时会被移除
v-leave-active:这里包含了上面的v-leave、v-leave-to两个时间段,在这里可以对下半场过渡定义过渡时间、曲线等
通过name属性设置过渡名称,之后就会根据该名称创建六个类
例如name = ‘demo’
表示显示的过程(由隐藏的状态变成显示的状态)
.demo-enter .demo-enter-to .demo-enter-active
表示隐藏的过程(由显示状态变成隐藏的状态)
.demo-leave .demo-leave-to .demo-leave-active
transition组件只是加了这六各类,具体的效果还需要通过css过渡或者动画(借助css3实现的)
入场过渡
我们通过为transition组件添加appear属性,实现入场过渡:当元素加载的时候,执行动画
- 通过动画效果实现
html
<div id="app">
<button @click="toggle">切换</button>
<!-- 通过name定义名称,这个名字可以自己取 -->
<transition name="demo">
<div class="box" v-show="isShow"></div>
</transition>
</div>
js
let app = new Vue({
el: '#app',
data: {
isShow: true
},
methods: {
toggle() {
this.isShow = !this.isShow
}
},
})
scss
.box {
width: 200px;
height: 200px;
background-color: green;
}
// 定义动画
@keyframes toggle {
// 只有两个状态,可以写0%-100%,也可以写from-to
from {
width: 200px;
height: 200px;
opacity