1.代码展示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js"></script>
<style>
.v-enter-active,.v-leave-active{
transition: all 2s;
}
.v-enter,.v-leave-to{
opacity: 0;
}
</style>
</head>
<body>
<div id="app">
<!--过渡模块:in-out表示新元素先过渡,完成之后当前元素再消失,/out-in当前元素先过渡,完成之后再进入-->
<transition mode="out-in">
<!--过渡元素中的if else一定要设置不同的key去要求VUE来强制刷新,否则只能切换显示,不能把过渡效果展示出来-->
<button type="button" v-if="show" @click="show=false" key="show">显示</button>
<button type="button" v-else @click="show=true" key="hide">隐藏</button>
</transition>
</div>
</body>
<script>
let vm = new Vue({
el: "#app",
data: {
show:true,
},
methods: {},
});
</script>
</html>
2.key的使用
<transition mode="out-in">
<!--过渡元素中的if else一定要设置不同的key去要求VUE来强制刷新,否则只能切换显示,不能把过渡效果展示出来-->
<button type="button" v-if="show" @click="show=false">显示</button>
<button type="button" v-else @click="show=true" >隐藏</button>
</transition>
(1)如果没有设置key特性,那么点击按钮,页面并不会出现动画效果,只是简单地替换了文字。
(2)设置了key特性,没有设置 mode,那么一个元素的出现动画和另外一个元素的消失动画会同时在页面上面进行,看起来比较混乱。
(3)设置了key特性,也设置 mode,出现动画和消失动画会按顺序执行,效果正常
(4)mode取值
out-in:先让元素消失,然后让另一个元素出现。
in-out:先让元素出现,然后让另一个元素消失。