像我们在上面两个示例中所做的那样,使用纯 CSS 过渡和动画没有任何问题。
但幸运的是,Vue 为我们提供了内置的 组件,如果我们想要在使用 v-if 或 v-show 从应用程序中删除或添加元素时对其进行动画处理,因为用纯 CSS 动画很难做到这一点。
首先让我们创建一个应用程序,其中按钮添加或删除 标签:
App.vue:
Add/Remove
Tag
Hello World!
运行示例 »
现在让我们将 组件包裹在 标签周围,看看如何以动画方式删除 标签。
当我们使用 组件时,我们会自动获得六个不同的 CSS 类,我们可以使用它们在添加或删除元素时设置动画。
在下面的示例中,我们将使用自动可用的类 v-leave-from 和 v-leave-to 在删除 标签时制作淡出动画:
App.vue:
Add/Remove
Tag
Hello World!
运行示例 »
当我们使用 组件时,有六个类自动可供我们使用。
由于 组件内的元素是 added,我们可以使用前三个类来为该过渡设置动画:
由于元素在 组件内删除,我们可以使用接下来的三个类 :
注意: 组件的根级别上只能有一个元素。
现在,让我们使用其中的四个类,以便在添加 标签和删除它时都可以制作动画。
App.vue:
Add/Remove
Tag
Hello World!
运行示例 »
我们还可以使用 v-enter-active 和 v-leave-active 在元素添加期间或删除期间设置样式或动画:
App.vue:
Add/Remove
Tag
Hello World!
运行示例 »
如果您有多个 组件,但您希望至少其中一个 组件具有不同的动画,则需要为 组件使用不同的名称来区分它们。
我们可以使用 name 属性选择 组件的名称,这也会更改过渡类的名称,以便我们可以为该组件设置不同的 CSS 动画规则。
如果将过渡 name 属性值设置为 'swirl',自动可用的类现在将以 'swirl-' 开头,而不是 'v-':
在下面的示例中,我们使用 name 属性为 组件提供不同的动画。 一个 组件没有指定名称,因此使用自动生成的以"v-"开头的 CSS 类来指定动画。 另一个 组件被命名为"swirl",以便可以使用自动生成的以"swirl-"开头的 CSS 类为其指定动画规则。
App.vue:
Add/Remove
Tag
本例中的第二个过渡的名称为"swirl",这样我们就可以使用不同的类名来将过渡分开。
Hello World!
Hello World!
运行示例 »
刚才提到的每个 Transition 类都对应一个事件,我们可以钩子该事件来运行一些 JavaScript 代码。
| Transition 过渡类 | JavaScript 事件 |
|---|---|
| v-enter-from | before-enter |
| v-enter-active | enter |
| v-enter-to | after-enter
enter-cancelled |
| v-leave-from | before-leave |
| v-leave-active | leave |
| v-leave-to | after-leave
leave-cancelled (v-show only) |
当下面的示例中发生 此代码钩子到 "after-enter",以便在初始动画完成后,运行一个显示红色 div 的方法。 Hello World! 可以使用下例中的"Toggle"按钮来中断 在输入动画完成之前再次单击切换按钮会触发'enter-cancelled'事件。 Hello World! 如果我们想要在页面加载时为某个元素添加动画效果,则需要在 在此示例中, 当页面打开时第一次呈现下面的 p 标签时,"appear"属性会启动动画。 如果没有 'appear' 属性,这个例子就没有动画。 Hello World! 单击按钮获取新图像。 新图像会在旧图像被删除之前添加。 我们将在下一个示例中使用 mode="out-in" 修复此问题。 在上面的示例中,在删除上一张图像之前添加下一张图像。 我们在 除了 单击按钮获取新图像。 对于 mode="out-in",在当前图像被删除之前不会添加下一个图像。 与前面示例的另一个区别是,这里我们使用计算属性而不是方法。 我们还可以使用 Transition 组件包裹着动态组件,以便可以实现切换动画。after-enter 事件时,会运行一个显示红色 示例
App.vue:
运行示例 »
JavaScript 过渡钩子
元素的enter过渡阶段,从而触发enter-cancelled事件:示例
App.vue:
运行示例 »
'enter-cancelled' 事件
"appear" 属性
组件上使用 appear 属性。appear 属性在页面首次加载时启动动画:示例
App.vue:
运行示例 »
'appear' 属性
元素之间的过渡
组件也可以用来在多个元素之间切换,只要我们使用 和 确保一次只显示一个元素:示例
App.vue:
运行示例 »
元素之间的过渡
mode="out-in"
组件上使用 mode="out-in" 属性和属性值,以便在添加下一个元素之前完成元素的删除。示例
mode="out-in" 之外,此示例还使用计算值"imgActive",而不是我们在上一个示例中使用的"newImg"方法。App.vue:
运行示例 »
mode="out-in"
使用动态组件进行过渡
组件来实现动态组件之间的切换动画:示例
App.vue:
运行示例 »
动态组件的过渡
Vue 练习
相关
视频
RELATED VIDEOS
科技资讯
1
2
3
4
5
6
7
8
9
精选课程
共5课时
17.2万人学习
共49课时
77万人学习
共29课时
61.7万人学习
共25课时
39.3万人学习
共43课时
71万人学习
共25课时
61.6万人学习
共22课时
23万人学习
共28课时
33.9万人学习
共89课时
125万人学习