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