多个元素的过渡效果
对于多个元素进行切换时,我们可用v-if/vue-else
来做,如下图框2中。要想给他们添加过渡效果,就得增加过渡的动画,但是如下图这样写,过渡动画是不能生效的。
因为当有相同标签名的元素切换时,需要通过key
值来设置唯一性,好让Vue
来区分它们,否则Vue
为了效率只会替换相同标签内部的内容,所以要记得用key
值区分一下。
这样加上key
就会出现明显的动画切换的效果,如下图:
这样这样
对于key值也有几种合并方法:
1.一些场景key
可以设置不同的状态来代替v-if
和v-else
重写后:
我是重写1
2.使用多个v-if
的多个元素的过渡,可以重写为绑定了动态属性的单个元素过渡
重写后:
我是重写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
的值在child
和child-one
中切换。
网友评论