vue笔记-12(动画钩子函数)

2020-09-17  本文已影响0人  7ColorLotus

动画-钩子函数实现半场动画的介绍

使用transition-group元素实现列表动画

代码演示

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue动画</title>
    <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.7.2/animate.min.css">

    <style>
        
        .ball {
            background-color:red;
            width: 50px;
            height: 50px;
            border-radius: 90%; 
            -moz-border-radius: 50%; 
            -webkit-border-radius: 50%;
            margin-top: 10px;
        }
    </style>
</head>

<body>
    <div id="app">
        <input type="button" value="toggle" v-on:click="flag = !flag">

        <!-- <div class="ball" v-show="flag"></div> -->

        <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: {
                beforeEnter(el){
                    //设置小球开始动画之前的起始位置
                    el.style.transform = "translate(0, 0)"
                    this.flag = true
                },
                enter(el, done){
                    el.offsetWidth //没有实际的作用,但是不写没有动画效果
                    // enter表示动画 开始之后的样式,这里,可以设置小球完成动画之后的结束状态
                    el.style.transform = "translate(150px,450px)"
                    el.style.transition = 'all 2s ease'

                    done() //done()函数就是afterEnter函数,done是afterEnter函数的引用
                },
                afterEnter(el){ //动画完成之后调用的函数
                    this.flag = !this.flag
                }
            }
        })
    </script>
</body>

</html>
上一篇 下一篇

猜你喜欢

热点阅读