Vue学习笔记 - 动画

136 阅读1分钟

单元素/组件的进入/离开过渡

插入或删除包含在 transition 组件中的元素时,可以应用过渡动画。

1、transition法

在进入时,元素有 class 的切换,其流程为:

元素插入DOM树 --------> v-enter-activev-enter ----(立即)----> v-enter-activev-enter-to --------> 全部移除

离开时:

v-leave-activev-leave-to ----(立即)----> v-leave-activev-leave --------> 移出DOM树

active全程都存在,因此在active类使用transition属性。

【通用CSS写法】:

enter-activeleave-active类放在一起,enterleave-to类放在一起,enter-toleave一般不用:

.v-enter-active, .v-leave-active{
    transition: /* ... */
}
.v-enter .v-leave-to{
    /* 刚进入、离开前 */
}

2、animation法

不用enterenter-toleaveleave-to,仅使用两个active和一个keyframes动画即可:

.v-enter-active{
    animation: xxx 1s;
}
.v-leave-active{
    animation: xxx 1s reverse;
}
@keyframes xxx{
    /* ... */
}

可用自定义类名,结合使用第三方动画库,如 Animate.css。

3、JavaScript钩子

参见文档

多个元素的进入/离开过渡

1、使用v-ifv-else控制元素

注意设置key

可以使用过度模式:out-inin-out

2、列表

<transition-group>标签,里面使用v-for,注意设置key

3、多个组件

使用动态组件:

<component v-bind:is="view"></component>

这种方法不需要设置key