Vue中半场动画-钩子函数的使用

请陛下批阅

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>半场动画</title>
    <script src="../../vue/vue-v2.6.11.js"></script>

    <style>
        .ball {
            width: 15px;
            height: 15px;
            border-radius: 50%;
            background-color: red;
        }
    </style>
</head>
<body>
<div id="app">
    <button @click="flag = !flag">快到碗里来</button>
    <transition
        @before-enter="beforeEnter"
        @enter="enter"
        @after-enter="alterEnter">
        <div class="ball" v-if="flag"></div>
    </transition>

</div>
</body>
<script>
    var vm = new Vue({
        el: '#app',
        data: {
            flag: false
        },
        methods: {
            // el 代表原生的 DOM 对象
            beforeEnter (el) {
                //动画进入之前的钩子函数
                //设置起始样式
                el.style.transform = 'translate(0, 0)'
            },
            enter (el, done){
                // 动画进入时的钩子函数
                //设置进行动画时的样式
                el.offsetWidth //加了这个  才会刷新动画效果
                el.style.transform = "translate(100px, 450px)";
                el.style.transition = "all 1s ease";

                // done 相当于 alterEnter 函数
                done();
            },
            alterEnter (el){
                // 动画进入之后的钩子函数
                this.flag = !this.flag;
            }
        }
    });
</script>
</html>
发布了62 篇原创文章 · 获赞 0 · 访问量 1247

猜你喜欢

转载自blog.csdn.net/weixin_45616246/article/details/105419695