美文网首页
Vue之过渡动画

Vue之过渡动画

作者: 念念碎平安夜 | 来源:发表于2019-07-28 11:50 被阅读0次

    一、简介

    1、Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果
    2、本质上还是使用CSS3动画:transition、animation

    二、基本用法

    1、使用transition组件,将要执行动画的元素包含在该组件内

    <transition>运动的元素</transition>
    

    2、例子 => 点击按钮隐藏和显示div

    <style>
        p {
        width: 300px;
        height: 300px;
        background-color: red;
    }
    </style>
    <div id="itany">
        <button @click="flag=!flag">点我</button>
        <p v-show="flag">hello</p>
    </div>
    <script>
        var vm = new Vue({
            el: '#itany',
            data: {
                flag: false
            },
        });
    </script>
    

    3、为显示和隐藏添加效果

    <transition name="fade"> // 需要给此组件起一个名字,后续要用到
        <p v-show="flag">hello</p>
    </transition>
    <style>
        p {
        width: 300px;
        height: 300px;
        background-color: red;
    }
    
    .fade-enter-active,.fade-leave-active {
        transition: all 3s ease;
    }
    
    .fade-enter-active {
        opacity: 1;
        width: 300px;
        height: 300px;
    }
    
    .fade-leave-active {
        opacity: 0;
        width: 50px;
        height: 50px;
    }
            /* .fade-enter需要放在.fade-enter-active的后面 */
    .fade-enter {
        opacity: 0;
        width: 100px;
        height: 100px;
    }
    </style>
    

    三、动画出现的不同时机,可以使用钩子函数做某些操作,钩子函数有8个,例5个:

    <transition name="fade" 
    @before-enter="beforeEnter" 
    @enter="enter" 
    @after-enter="afterEnter"
    @before-leave="beforeLeave" 
    @leave="leave" 
    @after-leave="afterLeave">
        <p v-show="flag">hello</p>
    </transition>
    
    methods: {
        beforeEnter(el) {
            // alert('动画进入之前');
        },
        enter() {
            // alert('动画进入');
        },
        afterEnter(el) {
            // alert('动画进入之后');
            el.style.background = 'blue';
        },
        beforeLeave() {
            // alert('动画即将之前');
        },
        leave() {
            // alert('动画离开');
        },
        afterLeave(el) {
            // alert('动画离开之后');
            el.style.background = 'red';
        }
    }
    

    四、结合第三方动画库animate.css一起使用

    <transition enter-active-class="animated fadeInLeft" leave-active-class="animated fadeOutRight">
        <p v-show="flag">hello</p>
    </transition>
    

    相关文章

      网友评论

          本文标题:Vue之过渡动画

          本文链接:https://www.haomeiwen.com/subject/xwoyrctx.html