Vue——16——钩子函数实现小球半场动画

用钩子函数才能实现小球的半场动画
在这里插入图片描述

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

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="../lib/vue.js"></script>
    <style>
        .ball {
            width: 15px;
            height: 15px;
            border-radius: 50%;
            /* color使字体颜色  我一直用color显示不出小球 */
            background-color: red;
        }
    </style>
</head>

<body>
    <div id="app">
        <input type="button" value="加入购物车" @click="flag=!flag">

        <!-- 因为是半场动画,所以不需要后面的leave -->
        <transition v-on:before-enter="beforeEnter" v-on:enter="enter" v-on:after-enter="afterEnter">
            <div class="ball" v-show="flag"></div>
        </transition>

    </div>
    <script>
        var vm = new Vue({
            el: '#app',
            data: {
                flag: false,
            },
            methods: {
                //注意:动画钩子函数的第一个参数:el,表示要执行动画的那个DOM元素是个原生的JS DOM对象
                //可以认为,el是通过document.getRlementById('')这个方式获取到的原生IS DOM对象


                beforeEnter: function (el) {
                    //表示动画入场之前,此时动画尚未开始,在beforeEnter中,设置元素开始动画之前的起始样式 
                    //设置小球开始动画之前的起始位置
                    el.style.transform = "translate(0,0)"
                },
                enter: function (el, done) {
                    //这句话没有实际的作用,但是如果不写无法出来动画效果,可以认为这个会强制动画刷新 只要和offset相关都可以 不论是height还是left
                    el.offsetWidth
                    //表示动画开始之后的样式,可以设置小球完成动画之后的结束状态
                    el.style.transform = "translate(150px,450px)"
                    //过渡行为
                    el.style.transition = "all 1s ease"
                    //想让小球立即消失,再enter里调用done 这里的done其实就是afterEnter这个函数的引用
                    done()
                },


                afterEnter: function (el) {
                    //动画完成之后  使小球消失

                    this.flag = false

                }
// 为什么每次开始小球都能回到初始位置,因为重新开始的时候又会执行 beforeEnter函数,小球位置置为0,0

            }
        })
    </script>


</body>

</html>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章