32.动画-使用js钩子动画生命周期函数.html

<!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=adge">
    <title>Document</title>
    <script src="vue.js"></script>
    <!--下面样式是画出一个小球-->
    <style>
        #ball{
            width:15px;
            height:15px;
            background-color:red;
            border-radius:50%;
        }
    </style>
</head>
<body>
    <div id="app">
        <input type="button" value="小球抛下去" @click="flag=!flag">
        <transition @before-enter="beforeEnter" @enter="enter" @after-enter="afterEnter">        
            <div id="ball" v-show="flag"></div>
        </transition>
    </div>
</body>
<script>
    //创建Vue实例,得到ViewModel
    var vm=new Vue({
        el:"#app",
        data:{
            flag:false
        },
        methods:{
            beforeEnter(el){//小球开始动画之前的起始状态
                el.style.transform="translate(0,0)"    //给小球摆正位置            
            },
            enter(el,done){//小球动画结束之后的结束状态
                //这是固定写法,如果不写el.offsetWidth就无法实现动画效果,其他的el.offset**也行
                el.offsetLeft
                el.style.transform="translate(150px,300px)"
                el.style.transition="all 1s ease"
                //当动画执行完毕后,会自动调用done这个函数,这个done就是afterEnter函数的引用
                done()
            },
            afterEnter(el){//小球动画结束之后的回调函数,用来做一些清理工作
                this.flag=!this.flag
            }
        }
    });
</script>
</html>

 

posted @ 2021-03-13 18:24  种太阳  阅读(1)  评论(0编辑  收藏  举报