缓动效果

缓动效果是在动画中表达深度的一个重要方式。动画新手最常犯的一个错误是在起始动画节点使用 ease-in,在结束动画节点使用 ease-out。实际上你需要的是反过来的。
如果我们将这些状态应用于过渡,它应该像这样:

  1. .button {
  2. background: #1b8f5a;
  3. /* 应用于初始状态,因此此转换将应用于返回状态 */
  4. transition: background 0.25s ease-in;
  5. }
  6. .button:hover {
  7. background: #3eaf7c;
  8. /* 应用于悬停状态,因此在触发悬停时将应用此过渡 */
  9. transition: background 0.35s ease-out;
  10. }

进入过渡 & 离开过渡

在插入、更新或从 DOM 中移除项时,Vue 提供了多种应用转换效果的方法。这包括以下工具:
自动为 CSS 过渡和动画应用 class;
集成第三方 CSS 动画库,例如 animate.css
在过渡钩子期间使用 JavaScript 直接操作 DOM;
集成第三方 JavaScript 动画库。
在这里,我们只介绍进入、离开的过渡,你也可以从下一节中学习列表过渡管理过渡状态

单元素/组件的过渡

Vue 提供了 transition 的封装组件,在下列情形中,可以给任何元素和组件添加进入/离开过渡
条件渲染 (使用 v-if)
条件展示 (使用 v-show)
动态组件
组件根节点
这里是一个典型的例子:

  1. <div id="demo">
  2. <button @click="show = !show">
  3. Toggle
  4. </button>
  5. <transition name="fade">
  6. <p v-if="show">hello</p>
  7. </transition>
  8. </div>
  1. const Demo = {
  2. data() {
  3. return {
  4. show: true
  5. }
  6. }
  7. }
  8. Vue.createApp(Demo).mount('#demo')

https://v3.cn.vuejs.org/guide/transitions-enterleave.html#%E8%BF%87%E6%B8%A1-class

过渡 class

在进入/离开的过渡中,会有 6 个 class 切换。

  1. v-enter-from:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。
  2. v-enter-active:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。
  3. v-enter-to:定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时 v-enter-from 被移除),在过渡/动画完成之后移除。
  4. v-leave-from:定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。
  5. v-leave-active:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。
  6. v-leave-to:离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave-from 被移除),在过渡/动画完成之后移除。


image.png