初始渲染的过渡
可以通过appear特性设置节点在初始渲染的过渡
这里默认和进入/离开过渡一样,同样也可以自定义CSS类名。
自定义JavaScript钩子:
多个元素的过渡
我们之后讨论多个组件的过渡,对于原生标签可以使用v-if/v-else。最常见的多标签过渡是一个列表和描述这个列表为空消息的元素:
可以这样使用,但是有一点需要注意:
当有相同标签名的元素切换时,需要通过key特性设置唯一的值来标记以让Vue区分它们,否则Vue为了效率只会替换相同标签内部的内容。即使在技术上没有必要,给在transition组件中的多个元素设置key是一个更好的实践。
示例:
在一些场景中,也可以通过给同一个元素的key特性设置不同的状态来代替v-if和v-else,上面的例子可以重写为:
使用多个v-if的多个元素的过渡可以重写为绑定了动态属性的单个元素过渡。例如:
可以重写为:
过渡模式
这里还有一个问题,下面的按钮:
在“on”按钮和“off”按钮的过渡中,两个按钮都被重绘了,一个离开过渡的时候另一个开始进入过渡。这是transition的默认行为-进入和离开同时发生。
在元素绝对定位在彼此之上的时候运行正常:
然后,我们加上translate让它们运动像滑动过渡:
同时生效的进入和离开的过渡不能满足所有要求,所以Vue提供了过渡模式
in-out:新元素先进行过渡,完成之后当前元素过渡离开。out-in:当前元素先进行过渡,完成之后新元素过渡进入。
用out-in重写之前的开关按钮过渡:
只用添加一个简单的特性,就解决了之前的过渡问题而无需任何额外的代码。
in-out模式不是经常用到,但对于一些稍微不同的过渡效果还是有用的。
将之前滑动淡出的例子结合:
多个组件的过渡
多个组件的过渡简单很多-我们不需要使用key特性。相反,我们只需要使用动态组件: