赞
踩
transition组件的作用是 给 单个 元素/组件 添加过渡效果;
transition-group组件的作用是给 多个 元素/组件 添加过渡效果;
插入、更新、销毁
的时候,封装成transition组件才会出现过渡效果。<transition>
<div v-if="isShow">toggled content</div>
</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() } }
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。