【问题标题】:Why it has not animation while removing div?为什么删除div时没有动画?
【发布时间】:2019-03-01 17:57:16
【问题描述】:

在我的项目中,我使用 vue.js 2.9。 我已经定义了移动和移除的动画(过渡和翻译):

transform: translate3d(0, 0, 0)
&.move-enter-active, &.move-leave-active
  transition: all 0.2s linear
&.move-enter, &.move-leave
  transform: translate3d(100%, 0, 0)

我的模板 div 是:

<template>
  <transition name="move">
    <div v-show="showFlag" class="food" ref="food">
      <div class="food-content"></div>
    </div>
  </transition>
<template>

我试过了:

&.move-enter, &.move-leave-to
  transform: translated3d(100%, 0, 0)

&.move-enter, &.move-leave-active
  transform: translated3d(100%, 0, 0)

还可以。 "&.move-leave-to" 很容易理解。

但是“&.move-leave-active”让我很困惑。

谁能帮帮我?

【问题讨论】:

    标签: vue.js css-transitions


    【解决方案1】:

    您需要使用v-leave-to 类而不是v-leave 来设置离开转换的final 状态。

    new Vue({
      el: '#app',
      data: {
        showFlag: true
      }
    })
    .food {
      transform: translate3d(0, 0, 0);
    }
    .food.move-enter-active, .food.move-leave-active {
      transition: all 0.2s linear;
    }
    .food.move-enter, .food.move-leave-to {
      transform: translate3d(100%, 0, 0);
    }
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.min.js"></script>
    <div id="app">
      <transition name="move">
        <div v-show="showFlag" class="food" ref="food">
          <div class="food-content">Food content</div>
        </div>
      </transition>
      <p><button @click="showFlag = !showFlag">Toggle</button></p>
    </div>

    v-leave 不起作用的原因是...

    请假的开始状态。触发离开过渡时立即添加,在一帧后删除

    https://vuejs.org/v2/guide/transitions.html#Transition-Classes

    【讨论】:

    • 我测试了.food.move-leave-active而不是.food.move-leave-to,也能成功运行,不知道为什么
    • active 类在过渡期间始终处于打开状态。文档建议您应该使用这些类来设置持续时间、延迟和缓动(这就是您已经在做的事情)。 -to 类定义了所需的最终状态,所以我认为你应该使用它们
    猜你喜欢
    • 1970-01-01
    • 2014-05-08
    • 2013-11-23
    • 2019-09-02
    • 2012-07-23
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多