Vue 过渡动画

进入(v-enter)/离开(v-leave)/移动(v-move)&列表(transition-group)的过渡

简单的例子:

<div id="demo">
  <button @click="show = !show"> Toggle </button>
  <transition name="fade">
    <p v-if="show">hello</p>
  </transition>
</div>
new Vue({
  el: '#demo',
  data: { show: true }
})
.fade-enter-active, .fade-leave-active {
  transition: opacity .5s;
}
.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
  opacity: 0;
}

1. 使用 <transition> 标签包裹需要过渡动画的元素,vue会在适当时候给元素添加类名。

2. 被 <transition> 标签包裹的元素需要使用条件渲染("v-if"/"v-show")。

3. 在 <transition> 标签内的 "name" 属性为动画提供具名,也可能缺省,则以 "v-" 作为前缀。

4. 以上配置并不会在首次渲染生效,使用 "appear" 属性解决,具体查看下面的 "初始渲染的过渡" 。

注意,若 "v-if"/"v-show" 放在组件内部只会产生"进入过度"。解决办法是把 "v-if"/"v-show" 放在父组件中。错误示范如下:

<div id="container">
  <button @click="isShow=!isShow">显示/隐藏</button>
  <transition>
    <child/>
    <!-- <child v-if="isShow"> -->  <!-- 正确做法 -->
  </transition>
</div>
<script>
Vue.component('child',{
  template: '<div v-if="$root.isShow" style="background:green;width:100px;height:100px;">子组件</div>'
});
new Vue({
  el: '#container',
  data() { return { isShow: false } }
});
</script>
<style>
  .v-enter-active, .v-leave-active { transition: opacity .5s; }
  .v-enter, .v-leave-to { opacity: 0; }
</style>

 


初始渲染的过渡:

<!-- 添加 appear 属性后可在首次渲染有 enter 过渡动画 -->
<transition appear><!-- ... --></transition>
<!-- 同样可以指定自定义类名及JS钩子函数,具体做法查看官方文档 -->

过渡的类名( 6个 ):

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值