Vue.js 中使用 transition 实现过渡动画

阅读时长 7 分钟读完

在 Vue.js 中,transition 组件可以帮助我们实现元素的过渡效果(如淡入淡出、滑动等),让页面更加动态化和生动有趣。本文将介绍如何使用 Vue.js 中的 transition 组件实现过渡动画效果。

基本使用方法

Vue.js 的 transition 组件需要包裹需要进行过渡效果的元素,并且需要添加 name 属性,指定过渡效果的名称。

在上面的代码中,当 show 属性的值为 true 时,p 元素会从无到有地淡入页面,当 show 属性的值为 false 时,p 元素会从有到无地淡出页面。注意:以下代码中所有的示例代码都是基于这个基本代码编写的。

过渡的 CSS 类名

transition 组件提供了下列的 CSS 类名,用于描述过渡的状态:

  • v-enter:进入状态的元素在插入之前添加此类名,在插入之后,移除此类名。
  • v-enter-active:进入状态的元素同时也带有此类名。
  • v-enter-to:进入状态的元素被插入之后立即添加此类名,并于动画/过渡完成时移除。
  • v-leave:离开状态的元素在触发离开之前添加此类名(然而 v-leave-btn,v-leave-to 和 v-leave-active 在会立即被设置)。
  • v-leave-active:离开状态的元素同时也带有此类名。
  • v-leave-to:离开状态的元素被移除之前立即添加此类名,并于动画/过渡完成时移除。

可以使用这些类名结合 CSS3 的 transition 和 animation 属性来实现各种过渡效果,例如下面这个淡入淡出的例子:

-- -------------------- ---- -------
-- -------- --
------------------- ------------------ -
  ----------- ------- ---- --------- ----
-
-- ----------- ----- ----- --
----------- -
  -------- --
  ---------- ------------------
-
-- ------ ------ ----- ----- - --
------------------ -
  -------- --
  ---------- --------------
-
-- ------ -- ----- ----- ---- --
-------------- -
  -------- --
  ---------- -----------------
-

自定义 CSS 类名

如果你想更改过渡与动画的 CSS 类名,你可以使用 transition 组件的 appear、enter-class、enter-active-class、enter-to-class、leave-class、leave-active-class、leave-to-class 等属性来实现,例如:

CSS 组合过渡效果

使用 name 属性为 transition 组件命名,多个 transition 组件可以指定同一个名称从而创建组合效果。在组合效果中,例如多个不同元素的淡入淡出会混在一起产生不一致的效果。因此我们建议同时在 name 属性中指定不同模式的名称。

上面的代码中,我们使用 fadeslide 两个名称分别描述 button 元素和 p 元素的过渡效果,从而实现组合效果。

JS 钩子函数

使用 transition组件还可以使用 JS 钩子函数,这些函数提供了更高级的自定义事件控制。它们有以下几个不同的钩子:

  • before-enter(el):在进入动画之前执行 (可选)
  • enter(el, done):进入动画时执行 (可选)
  • after-enter(el):进入动画结束后执行 (可选)
  • enter-cancelled(el):进入动画取消时执行 (可选)
  • before-leave(el):离开动画之前执行 (可选)
  • leave(el, done):离开动画时执行 (可选)
  • after-leave(el):离开动画结束后执行 (可选)
  • leave-cancelled(el):离开动画取消时执行 (可选)

需要注意的是,这些函数的第一个参数 el 代表当前元素。而 enter()、leave() 函数会提供一个 done 函数作为参数,用于通知 transition 组件动画或过渡完成。

-- -------------------- ---- -------
-----------
  -----------
  ---------------------------
  --------------
  -------------------------
  ---------------------------------
  ---------------------------
  --------------
  -------------------------
  ---------------------------------
-
  -- ------------------ -----------
-------------

在上面的代码中,我们为 transition 组件绑定了 beforeEnter、enter、afterEnter、enterCancelled、beforeLeave、leave、afterLeave、leaveCancelled 这些函数。

-- -------------------- ---- -------
-------- -
  ------------ -------- ---- -
    ---------------------------
  --
  ------ -------- ---- ----- -
    ---------------------
    -------
  --
  ----------- -------- ---- -
    --------------------------
  --
  --------------- -------- ---- -
    ------------------------------
  --
  ------------ -------- ---- -
    ---------------------------
  --
  ------ -------- ---- ----- -
    ---------------------
    -------
  --
  ----------- -------- ---- -
    --------------------------
  --
  --------------- -------- ---- -
    ------------------------------
  -
-

在 JavaScript 中,我们编写了 beforeEnter、enter、afterEnter、enterCancelled、beforeLeave、leave、afterLeave、leaveCancelled 这些函数,并打印出了它们的状态。

总结

本文介绍了 Vue.js 中使用 transition 组件实现过渡动画效果的基本用法,以及一些高级的自定义方式,希望对您有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65001a0c95b1f8cacde4de81

纠错
反馈