应用于vue中组件的进入、离开时添加过渡
适用于:v-if/v-show的组件、动态组件、组件根节点
通过一个简单的例子来解释,首先通过脚手架创建一个项目
在首页设置两个router-link 用于跳转界面
<template>
<div id="app">
<div>
<router-link to="/about" tag="button">to-about</router-link>
<router-link to="/home" tag="button">to-home</router-link>
</div>
<router-view></router-view>
</div>
</template>
<script>
export default {
name: 'app',
data(){
return{
}
},
components: {
},
methods:{
}
}
</script>
<style>
</style>
然后做两个简单的路由页面home和about并注册好,内容就一行字
<template>
<div class="about">
<h1>This is an about page</h1>
//home页面就是 this is a home page
</div>
</template>
如果想要添加过渡效果,就要使用transition标签包裹住目标dom元素,并给标签添加name
<template>
<div id="app">
<div>
<router-link to="/about" tag="button">to-about</router-link>
<router-link to="/home" tag="button">to-home</router-link>
</div>
<transition name="test">
<router-view></router-view>
</transition>
</div>
</template>
<script>
export default {
name: 'app',
data(){
return{
}
},
components: {
},
methods:{
}
}
</script>
<style>
</style>
通过vue官网可得知,过渡过程中有几种状态,分别是
v-enter v-enter-active v-enter-to v-leave v-leave-active v-leave-to
如果给transition标签添加了name值,那么上面的写法就要修改为 “.name-enter .name-leave”等
其实这些状态可以向理解生命周期一样去理解,下面给一张官网的图,图里展示的是dom元素透明度在展示、不展示间切换的过渡
-
v-enter
:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。 -
v-enter-active
:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。 -
v-enter-to
:2.1.8 版及以上定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时v-enter
被移除),在过渡/动画完成之后移除。 -
v-leave
:定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。 -
v-leave-active
:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。 -
v-leave-to
:2.1.8 版及以上定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时v-leave
被删除),在过渡/动画完成之后移除。
那么应用到刚刚我们写的简单页面 只需要在style里写入以下内容即可达成:不展示时1s逐渐透明,展示时1s逐渐实体
.test-enter,.test-leave-to{
opacity: 0;
}
.test-enter-to,.test-leave{
opacity: 1;
}
.test-enter-active,.test-leave-active{
transition:all 1s;
}