Vue 过渡和动画
Vue 提供了 <Transition> 和 <TransitionGroup> 这两个内置组件,可以帮助我们轻松地为进入、离开或列表变化的元素添加过渡和动画效果。
<Transition> 组件
<Transition> 是一个内置组件,这意味着它无需注册就可以在任何组件的模板中使用。它可以为一个元素或组件的进入和离开应用动画。
它支持的场景包括:
- 由
v-if或v-show触发的条件渲染。 - 由
<component>切换的动态组件。 - 路由切换。
使用方法
将需要添加过渡效果的元素包裹在 <Transition> 组件中即可。
当 <p> 元素被插入或移除时,Vue 会自动添加或移除一系列 CSS class。
- 进入 (Enter):
fade-enter-from: 进入动画的起始状态。fade-enter-active: 应用于整个进入动画期间。fade-enter-to: 进入动画的结束状态。
- 离开 (Leave):
fade-leave-from: 离开动画的起始状态。fade-leave-active: 应用于整个离开动画期间。fade-leave-to: 离开动画的结束状态。
这里的 fade 是 <Transition> 组件的 name prop。如果没有 name,则 class 的前缀默认为 v。
<TransitionGroup> 组件
<TransitionGroup> 是为 v-for 列表中的元素或组件添加过渡效果的组件。它有几个特点:
- 默认情况下,它不会渲染一个包裹元素。但你可以通过
tagprop 指定一个元素来渲染。 - 过渡效果会应用到内部的每一个元素上,而不是容器自身。
- 必须为列表中的每个元素提供一个唯一的
keyattribute。 - 它不仅能处理元素的进入和离开,还能处理元素位置的移动,这通过
v-moveclass 实现。
示例:列表的移动过渡
v-move class 会在元素改变位置时被应用。它通常用于指定一个 CSS transition,使得列表的重新排序过程变得平滑。