Vue中动画的使用

Vue中动画的使用

在Vue中动画的实现有三种方式,具体如下所示:
  1. 使用过渡类名实现动画(具体代码如下)
 1. 使用 transition元素,把需要被动画控制的元素,包裹起来
<div id="app">
    <input type="button" value="动画" @click="flag=!flag">
    <transition>
        <p v-if="flag">Vue中过渡类名实现动画</p>
    </transition>
</div>
<script>
    var vm = new Vue({
        el: "#app",
        data: {
            flag: false
        },
        methods: {}
    })
</script>
 2. 其次在style标签中需要设置两组样式
<style>
        .v-enter,     /*进入之前,元素的起始状态,此时还没有进入*/
        .v-leave-to { /*动画离开之后,离开的终止状态,此时,动画已经结束了*/
            transform: translateX(100px);
            opacity: 0;
        }

        .v-enter-active,   /*入场动画的时间段*/
        .v-leave-active {  /*离场动画的时间段*/
            transition: all 1s;
        }
    </style>
  1. 使用第三方类实现动画(animate.css
//首先引入animate.css文件,官方网站在上面
<link rel="stylesheet" href="animate.css">
<div id="app">
    <input type="button" value="动画" @click="flag=!flag">
    <transition enter-active-class="bounceIn" leave-active-class="bounceOut">
        <p v-if="flag" class="animated">Vue中过渡类名实现动画</p> <!-- class="animated"一定要设置 -->
    </transition>
</div>
<script src="vue.js"></script>
<script>
    var vm = new Vue({
        el: "#app",
        data: {
            flag: false
        },
        methods: {}
    })
</script>
  1. 使用钩子函数实现半场动画
1.使用transition把需要动画的元素包裹起来
  <div id="app">
    <input type="button" value="动画" @click="flag=!flag">
    <transition
      @before-enter="beforeEnter"
      @enter="enter"
      @after-enter="afterEnter">
      <div class="ball" v-show="flag"></div>
    </transition>
  </div>
 1. 设置方法实现动画
<script>
    var vm = new Vue({
      el: '#app',
      data: {
        flag: false;
      },
      methods: {
        // 注意: 动画钩子函数的第一个参数:el表示要执行动画的那个DOM元素,是个原生的JS DOM对象
        beforeEnter(el){
          // beforeEnter 表示动画入场之前,此时,动画尚未开始,可以 在 beforeEnter 中,设置元素开始动画之前的起始样式
          // 设置小球开始动画之前的,起始位置
          el.style.transform = "translate(0, 0)";
        },
        enter(el, done){
          // 这句话,没有实际的作用,但是,如果不写,出不来动画效果
          // 可以认为 el.offsetWidth 会强制动画刷新
          el.offsetWidth
          // enter 表示动画 开始之后的样式,这里,可以设置小球完成动画之后的,结束状态
          el.style.transform = "translate(150px, 450px)";
          el.style.transition = 'all 1s';
          // 这里的 done,起始就是 afterEnter 这个函数,也就是说:done是 afterEnter 函数的引用
          done();
        },
        afterEnter(el){
          // 动画完成之后,会调用 afterEnter
          this.flag = !this.flag;
        }
      }
    });
  </script>
  1. 想要了解更多,请查看官方文档 Vue动画官方文档
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值