<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>过渡动画</title>
    </head>
    <style type="text/css">
        p{
            width:250px;
            height: 250px;
            background-color: grey;
        }
        .fade-enter-active,.fade-leave-active {
            transition: all 3s ease;
        }
        .fade-enter-active {
            opacity: 1;
            width: 250px;
            height: 250px;
        }
        .fade-leave-active {
            opacity: 0;
            width: 0px;
            height: 0px;
        }
        /* .fade-enter需要放在.fade-enter-active的后面*/
        .fade-enter{
            opacity: 0;
            width: 100px;
            height: 100px;
        }
    </style>
    <script type="text/javascript" src="js/vue.js" ></script>
    <body>
        <div id="div1">
            <button @click="flag=!flag">点击</button>
            <!-- 钩子函数 -->
            <transition name="fade"
                @before-enter="beforeEnter"
                @enter="enter"
                @after-enter="afterEnter"
                @before-leave="beforeLeave"
                @leave="leave"
                @after-leave="afterLeave"
            >
                <p v-show="flag">
                
                </p>
            </transition>
        </div>
    </body>
    <script>
        let vm = new Vue({
            el: "#div1",
            data:{
                flag:false
            },
            methods:{
                beforeEnter(){
                    alert('动画进入之前');
                },
                enter(){
                    alert('动画进入');
                },
                afterEnter(e){
                    alert('动画进入之后');
                    e.style.background="yellow";
                },
                beforeLeave(){
                    alert('动画离开之前');
                },
                leave(){
                    alert('动画离开');
                },
                afterLeave(){
                    alert('动画离开之后');
                }
            }
        });
    </script>
</html>