【问题标题】:What is the use of v-leave CSS class in Vue transition?Vue过渡中v-leave CSS类有什么用?
【发布时间】:2023-03-20 14:21:01
【问题描述】:

只是探索在我的项目中引入Vue过渡的可能性,根据文档,过渡过程中可以使用的类有6个,v-leave就是其中之一,但好像没用过在任何例子中。

所以,我创建了一个如下所示的简单示例来看看它是如何工作的,似乎 v-leave 类被添加到元素中但它没有任何效果?

谁能指出我哪里做错了?

提前致谢。

new Vue({
  el: '#demo',
  data: {
    show: false 
  }
})
.v-leave {
  transform: translateY(50px);
}	
.v-leave-to {
  opacity: 0;
}
.v-leave-active{
  transition: all 1s ease;
}
.v-enter {
  opacity: 0;
}
.v-enter-to {
  opacity: 1;
}		
.v-enter-active {
  transition: opacity 1s ease;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.2/vue.min.js"></script>
<div id="demo">
  <button v-on:click="show = !show">
    Toggle
  </button>
  <transition>
    <p v-show="show">hello</p>
  </transition>
</div>

【问题讨论】:

    标签: vue.js css-transitions


    【解决方案1】:

    您应该执行以下操作才能进入/离开:

    HTML:

    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.2/vue.min.js"></script>
    <div id="demo">
       <button v-on:click="show = !show">
        Toggle
      </button>
      <transition name="fade">
        <p v-if="show">hello</p>
      </transition>
    </div>
    

    CSS:

    .fade-enter-active, .fade-leave-active {
      transition: opacity .5s
    }
    .fade-enter, .fade-leave-to {
      opacity: 0
    }
    

    您的主要问题是为过渡设置一个名称(在本例中为 fade),然后从 CSS 中引用它。

    official documentation Working example [here][1] 中有一个像你这样的优秀例子

    编辑:

    在文档中:

    v-leave:离开的开始状态。离开时立即添加 触发过渡,一帧后移除。

    和:

    v-leave-active:离开的活动状态。 [...] 这个类可用于定义离开过渡的持续时间、延迟和缓动曲线

    v-leave 仅用于detect 过渡的开始(并对其进行操作),但如果您使用它,所需的效果将渲染 1 帧。如果你想使用leave 动画,你应该使用leave-active 来指定持续时间和其他东西。

    希望对你有帮助!

    【讨论】:

    • 你运行我的代码了吗?有用。如果你给你的过渡一个名字,例如fade,那么你需要像你在.fade-enter-active那样在css前面加上前缀。我这里没有用名字,所以默认的css类是v-enter-active
    • 是的,我做到了.. 我试图解释为什么休假部分不起作用。在您的示例中,当进入过渡效果很好(淡入),但离开时,没有。如果您喜欢官方 Vue.js 教程(和我的)它适用于两种操作。如果我缺少可以帮助您的东西,请告诉我。如果您想知道 why 不能在您的示例中运行,那是另一个问题。
    • 我的意思是,在您的示例中,没有 .fade-leave 类对吗?如果您通读文档,实际上有一个 .v-leave 类可用于离开转换,在您的情况下,它应该相应地更新为 .fade-leave。我的问题是,我添加了 .v-leave 类,但它不起作用,在您的示例中,根本没有 .fade-leave 类(即使在官方文档中,作者也没有使用 .v-leave )。清楚吗?
    • 看我的编辑,也许它澄清了你的问题,你说:I add the .v-leave class and it's not working,也许“它正在工作”但只有 1 帧(你看不到它)。
    • 这很奇怪,因为如果从我的代码中可以看出这是一个明显的举动(向下移动 50px)无论如何感谢您的解释:)
    猜你喜欢
    • 2018-08-26
    • 2017-08-13
    • 2020-12-20
    • 2020-12-01
    • 2018-11-24
    • 1970-01-01
    • 2021-07-02
    • 2015-09-01
    • 2020-03-04
    相关资源
    最近更新 更多