Vue <transition> 通过动态name属性实现动态过渡案例

 

 

<!-- Vue <transition> 通过动态name属性实现动态过渡案例 -->
<template>
  <div class="page">

    <p>
      <button @click="switchTransName">switch transitionName</button>
    </p>

    <transition :name="tranName">
      <div v-if="show" class="box">hello</div>
    </transition>

  </div>
</template>

<script>
  export default {
    name: 'HelloWorld',
    data() {
      return {
        tranName: 'tran',
        show: true,
      }
    },
    mounted() {
      this.setIntervalAni();
    },
    methods: {
      setIntervalAni() {
        let vm = this;
        setInterval(function () {
          vm.show = !vm.show;
        }, 1000)
      },
      switchTransName() {
        this.tranName === 'fade' ? this.tranName = 'tran' : this.tranName = 'fade';
      }
    }
  }
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="less">
  .box {
    width: 100px;
    text-align: center;
  }

  // fade
  .fade-enter {
    opacity: 0;
  }

  .fade-enter-active, .fade-leave-active {
    transition: all 0.5s;
  }

  .fade-leave-to {
    opacity: 0;
  }

  // transform
  .tran-enter {
    // 关于transform scale可参考:https://www.cnblogs.com/yanggeng/p/11277199.html
    // transform: scaleX(3) scaleY(3);  =  transform: scale(3, 3);
    transform: scale(3, 3);
  }
  
  .tran-enter-active, .tran-leave-active {
    transform-origin: center;
    transition: all 1s;
  }

  .tran-leave-to {
    transform: scale(0, 0);
  }
</style>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值