【Vue13】多个元素或组件的过渡动画

多个元素的过渡效果

对于多个元素进行切换时,我们可用v-if/vue-else来做,如下图框2中。要想给他们添加过渡效果,就得增加过渡的动画,但是如下图这样写,过渡动画是不能生效的。

因为当有相同标签名的元素切换时,需要通过key值来设置唯一性,好让Vue来区分它们,否则Vue为了效率只会替换相同标签内部的内容,所以要记得用key值区分一下。
这样加上key

就会出现明显的动画切换的效果,如下图:


这样这样

对于key值也有几种合并方法:

1.一些场景key可以设置不同的状态来代替v-ifv-else

我是原版1

重写后:
我是重写1

2.使用多个v-if的多个元素的过渡,可以重写为绑定了动态属性的单个元素过渡

我是原版2

重写后:
我是重写2-1

我是重写2-2


上面是个关于key值的小插曲,在Vue<transition> 的默认行为 - 进入和离开同时发生,但是有的时候想要别的效果,SOVue中在transition中还提供了mode参数来设置多个属性切换的效果(过渡模式)。
mode有两个值:
1.in-out:新元素先进行过渡,完成之后当前元素过渡离开(比如先进入再隐藏)。

2.out-in:当前元素先进行过渡,完成之后新元素过渡进入(比如先隐藏再显示))。

多个组件的过渡效果

多个组件的过渡不需要用到key的特性,可用到之前学的知识点——动态组件。

本来我们可以是这样写:

之前的做法


通过动态组件是这样写的:

模板处这样写

type和模板通过is绑定

image.png

判断一下type的值,如果type===child,则修改成child-one,否则改成child,这样就可以通过is关联的数据,来控制type的值在childchild-one中切换。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,082评论 0 29
  • vue概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 7,280评论 0 25
  • Vue 实例 属性和方法 每个 Vue 实例都会代理其 data 对象里所有的属性:var data = { a:...
    云之外阅读 2,252评论 0 6
  • 相比于OPPOR7/R7s两代,OPPOR9拥有更为出色的外观设计、更为精湛的制造工艺、安全可靠的低压VOOC闪充...
    巧桑阅读 887评论 0 3
  • 阳台的一角 一朵山茶花开了 粉色的花瓣 轻轻的 呢喃在枝头 静静的 剥开一层层的美丽 山茶花开的时候 我没感觉到她...
    蔚霐阅读 272评论 1 2