transition组件的作用是 给 单个 元素/组件 添加过渡效果;
transition-group组件的作用是给 多个 元素/组件 添加过渡效果;
插入、更新、销毁的时候,封装成transition组件才会出现过渡效果。<transition>
<div v-if="isShow">toggled contentdiv>
transition>
<transition>
<component :is="view">component>
transition>
is属性的值为要渲染的组件的组件名;<transition>
<view> view>
transition>
<transition>
<component is='组件名' 属性名=‘属性值’ @方法名=‘方法值’>component>
transition>
注:transition只会把过渡效果应用到其包裹的内容上,而不会额外渲染 DOM 元素(类似template)。
当 标签/组件 使用 transition包裹后,组件的挂载/卸载将会通过以下6个类名以供我们控制过渡效果
但是若是页面中存在多个transition并且他们的动画效果不一致时,可以通过name属性来进行单独设置
<transition name='xxx'>transition>
如上将name属性设置为xxx,那该组件内包裹的元素的动画效果将会通过以下6个类名进行控制
这六个类名的作用分别是什么? 将会在 使用 中进行具体说明。
<template>
<div>
<button @click="isShow = !isShow">点我改变元素状态</button>
<transition appear name="move">
<div v-if="isShow" class="box">transition包裹的标签</div>
</transition>
</div>
</template>
<script>
export default{
data(){
return{
isShow:true
}
}
}
</script>
<style lang="less" scoped>
@keyframes donghua {
from{
transform: translateX(-100px);
}
to{
transform: translateX(0);
}
}
// 元素渲染时:在组件“进入”页面时会自动将该类名添加在被transition组件包裹的标签上
.move-enter-active{
animation: donghua 0.5s linear;
}
// 元素销毁时:在组件“离开”页面时会自动将该类名添加在被transition组件包裹的标签上
.move-leave-active{
animation: donghua 0.5s linear reverse;
}
.box{
text-align: center;
height: 50px;
line-height: 50px;
background: pink;
color: #fff;
}
</style>
</style>

xxx-enter-active表示元素进入过程中所执行的样式(动画);xxx-leave-active表示元素离开过程中所执行的样式(动画);<template>
<div>
<button @click="isShow = !isShow">点我改变元素状态</button>
<transition appear name="move">
<div v-if="isShow" class="box">transition包裹的标签</div>
</transition>
</div>
</template>
<script>
export default{
data(){
return{
isShow:true
}
}
}
</script>
<style lang="less" scoped>
// 元素进入过程中的css动画,元素离开过程中的css动画
.move-enter-active,.move-leave-active{
transition: all 0.3s linear;
}
// 元素进入之前的样式, 元素离开之后的样式
.move-enter,.move-leave-to{
transform: scale(0);
opacity: 0;
}
// 元素进入之后的样式,元素离开之前的样式
.move-enter-to, .move-leave{
transform: scale(1);
opacity: 0;
}
.box{
text-align: center;
height: 50px;
line-height: 50px;
background: pink;
color: #fff;
}
</style>
xxx-enter表示元素进入之前的样式xxx-enter-to表示元素进入之后的样式xxx-leave表示元素离开之前的样式xxx-leave-to表示元素离开之后的样式xxx-enter-active表示元素进入过程中所执行的样式(动画)
xxx-leave-active表示元素离开过程中所执行的样式(动画)
xxx-enter表示元素进入之前的样式
xxx-enter-to表示元素进入之后的样式
xxx-leave表示元素离开之前的样式
xxx-leave-to表示元素离开之后的样式
<button @click='showcomponentClick'>页面点击事件button>
<transition>
<component is='componentPopup' ref='componentpopup'>component>
transtion>
data(){
return{
componentPopup:''
}
},
component:{
// 将所有弹框组件进行注册
},
methods:{
showcomponentClick(){
// [1] 发送请求获取组件名-componentPopup
this.componentPopup = xxx
// [2] 显示组件
this.$refs.componentpopup.show()
}
}