提示:
VUE学习:vue基础21————动画03:多种类型过渡
前言
本文学习Vue的动画相关内容。
提示:以下是本篇文章正文内容,下面案例可供参考
动画
多种类型过渡
多标签过渡
过渡模式:
in-out表示新元素先过渡,完成后当前元素再消失。
out-in当前元素先过渡,新元素再进入。
<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">
<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>
多组件过渡
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js"></script>
<style>
.v-enter-active,.v-leave-active{
transition: all 1s;
}
.v-enter,.v-leave-to{
opacity: 0;
}
.v-enter-to,.v-leave{
opacity: 1;
}
</style>
</head>
<body>
<div id="app">
<button type="button" @click="view='news'">新闻</button>
<button type="button" @click="view='info'">信息</button>
<transition mode="out-in">
<component :is="view"></component>
</transition>
</div>
</body>
<script>
let news={
template:'<div><h3>这里是新闻页</h3></div>'
}
let info={
template: '<div><h3>信息发布</h3></div>'
}
let vm = new Vue({
el: "#app",
data: {
view:'news'
},
methods: {},
components:{news,info}
});
</script>
列表过渡
transition-group是专门针对列表渲染的过渡效果使用的,只是名字上略有不同,和transition的使用上一致
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js"></script>
<style>
.v-enter-active,.v-leave-active{
transition: all 1s;
}
.v-enter,.v-leave-to{
opacity: 0;
transform: translateY(20px);
}
b{
margin-right: 10px;
display: inline-block;
}
</style>
</head>
<body>
<div id="app">
<div>
<button type="button" @click="add">添加数字</button>
<button type="button" @click="remove">删除数字</button>
</div>
<div>
<!--transition-group是专门针对列表渲染的过渡效果使用的,只是名字上略有不同,和transition的使用上一致-->
<transition-group>
<b v-for="num in arr" :key="num">{{num}}</b>
</transition-group>
</div>
</div>
</body>
<script>
let vm = new Vue({
el: "#app",
data: {
arr:[1,2,3,4,5,6,7],
nextNum:8
},
methods: {
add(){
this.arr.push(this.nextNum++);
},
remove(){
let index=Math.floor(this.arr.length/2);
this.arr.splice(index,1);
}
}
});
</script>