代码演示:

202105211621585044708182

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

v-enter:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。

v-enter-active:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。

v-enter-to:2.1.8 版及以上定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时 v-enter 被移除),在过渡/动画完成之后移除。

v-leave:定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。

v-leave-active:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。

v-leave-to:2.1.8 版及以上定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave 被删除),在过渡/动画完成之后移除。

大致思路:

对于这些在过渡中切换的类名来说,如果你使用一个没有名字的 <transition>,则 v- 是这些类名的默认前缀。如果你使用了 &lt:transition name="my-transition">,那么 v-enter 会替换为 my-transition-enter。

JavaScript

var vm = new Vue({
  el: '#app',
  data: function () {
    return {
      show: true
    }
  },
  methods: {}
})
// @click = "show=!show":
// 在vue中的数据中心中设定show: true,
// 在h1标签中的设定v-if = "show", 这样可以实现点击button来切换显示h1标签里的内容

CSS

.title {
  width: 360px;
  height: 100px;
  line-height: 100px;
  background: orange;
  border: 2px solid olivedrab;
  color: aliceblue;
  font-size: 40px;
  text-align: center;
  margin: 50px auto;
}

.w-enter {
  opacity: 0;
}

.w-enter-active {
  animation: d 3s;
}

.w-enter-to {
  opacity: 1;
}

.w-leave {
  opacity: 1;
}

.w-leave-active {
  animation: d 3s;
}

.w-leave-to {
  opacity: 0.5;
}

/* vue中的过渡动画结合css3中的animation关键帧 */
@keyframes d {
  0% {
    transform: scale(0);
  }

  50% {
    transform: scale(1.3);
  }

  100% {
    transform: scale(1);
  }
}

在html标签中,h1标签用transition标签包裹着,其名字为w,为w设置六个切换/过渡与关键帧动画,让图形显现时是由小变大,透明度由浅到深;隐藏动画相反。