Vue.js 提供了 <transition>
组件以在插入、更新或移除 DOM 时应用过渡效果。它允许在元素或组件进入/离开时应用 CSS 过渡或动画,并允许在同一时间触发 JavaScript 动画和钩子函数。
你可以为路由更改添加过渡效果。在你的 Vue 路由组件中使用 <transition>
,如下:
<template>
<transition name="fade">
<router-view></router-view>
</transition>
</template>
然后,你需要添加 CSS 来定义过渡效果。你可以使用 name
属性指定的名称为过渡添加 CSS:
.fade-enter-active, .fade-leave-active {
transition: opacity .5s;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
在这个例子中,当路由改变时,新的页面会渐入(fade in),旧的页面会渐出(fade out)。
注意,你需要确保你的 Vue 应用支持 CSS 过渡类名。你可能需要在项目的设置中启用这个功能。
以上是一个基本的过渡效果,但 Vue 的 <transition>
组件提供了很多其他的功能,包括多个同时进行的过渡、不同类型的过渡(例如滑动、缩放等)、JavaScript 钩子函数,等等。你可以查看 Vue.js 文档中的过渡和动画部分了解更多信息。
name 属性指定的名称是什么?
name
属性在Vue.js的<transition>
元素中用于定义过渡的名称。这个名称会被用作基础来自动生成 CSS 过渡类名。
例如,如果你有一个 <transition name="fade">
元素,那么Vue会自动使用这个name
值(在这个例子中是 “fade”)来创建一组CSS类:
-
fade-enter
: 定义进入过渡的开始状态。在元素被插入时生效,在下一帧移除。 -
fade-enter-active
: 定义进入过渡的结束状态。在元素整个进入过渡过程中生效。 -
fade-leave
: 定义离开过渡的开始状态。在离开过渡被触发时生效,在下一帧移除。 -
fade-leave-active
: 定义离开过渡的结束状态。在元素整个离开过渡过程中生效。
这些类可以在你的CSS文件中被指定,以控制过渡的具体样式。例如,你可以使用以下CSS来创建一个淡入淡出效果:
.fade-enter-active, .fade-leave-active {
transition: opacity .5s;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
在这个例子中,当元素进入或离开时,它们会逐渐变为透明,从而实现淡入和淡出的效果。
四个状态的发生顺序
在Vue.js的过渡和动画系统中,一次完整的过渡分为两个阶段:进入(enter)和离开(leave)。每个阶段又包含两个步骤:开始(enter/leave)和活跃(enter-active/leave-active)。以下是这四个类的应用顺序和生命周期:
- Enter/Leave: 当元素刚被插入,或者动态条件触发元素离开时,“enter/leave” 类立即生效,并在下一帧被移除。这个类可以用来定义过渡的初始状态。
- Enter-active/Leave-active: 当"enter/leave"类被移除后,"enter-active/leave-active"类被应用,并在整个过渡过程中保持。这个类通常用来定义过渡的结束状态和持续时间。
在一个进入过渡中:
- "enter"类用于设置过渡开始时的CSS属性,
- 然后"enter-active"类用于设置过渡持续时间和结束时的CSS属性。
在一个离开过渡中:
- "leave"类用于设置过渡开始时的CSS属性,
- 然后"leave-active"类用于设置过渡持续时间和结束时的CSS属性。
类名的应用和移除顺序如下:
进入过渡: .fade-enter -> .fade-enter-active -> 移除.fade-enter和.fade-enter-active
离开过渡: .fade-leave-active -> .fade-leave-to -> 移除.fade-leave-active和.fade-leave-to