Vue--使用钩子函数模拟小球半场动画

Vue–使用钩子函数模拟小球半场动画

<!DOCTYPE html>
<html lang="en">

<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Document</title>
 <script src="../lib/vue.js"></script>
 <style>
     .ball{
         width: 15px;
         height: 15px;
         border-radius:50%;
         background-color:red ;
     }
 </style>
</head>

<body>
 <div id="app">
     <input type="button" value="抛出" @click="flag=!flag">
    
     <!--使用transition元素把小球包裹起来-->
     <transition
     @before-enter="beforeEnter"
     @enter="enter"
     @after-enter="afterEnter">
        <div class="ball" v-show="flag"></div>
     </transition>
 </div>
 <script>
    // Vue.directive("focus",function(el){})
 var vm=new Vue({
 el:'#app',
 data:{
     flag:false
 },
 methods:{
     //注意:动画钩子函数第一个参数:el,表示要执行动画的那个DOM元素,是个原生JS DOM对象
     //可以认为el通过这种方式获取的原生对象---document.getelementByid('')
    beforeEnter(el){
        
        //beforeEnter表示动画入场前,此时,动画尚未开始,可以在beforeEnter中,设置元素开始动画之前的起始样式
        el.style.transform="translate(0, 0)"     //设置小球开始动画的起始位置

    },
    
    enter(el,done) {
       //必须加下面一行,否则不会出现应有的效果
        el.offsetWidth;//这里可以理解成强制浏览器刷新,也可以写el.offsetHeigh
        //enter表示动画开始之后的样式,这里可以设置小球完成动画之后的,结束状态
        el.style.transform="translate(150px,450px)"     //终止位置
        el.style.transition="all 1s ease"                //过渡时间
        done()      //立即消失,防抖动
        
    },
    afterEnter(el){
        //动画完成之后,回调用afterEnter
        this.flag=!this.flag
    }
 }
 });
 </script>
</body>

</html>

效果图
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值