vuejs深入篇二过渡效果中篇

初始渲染的过渡

可以通过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特性。相反,我们只需要使用动态组件:




转载请注明:http://www.aierlanlan.com/tzrz/1220.html