vue学习笔记day18 vue动画

旧巷老猫 提交于 2020-03-08 18:40:36
一 vue的过渡 (动画)
    1> 利用class 名称
    2》利用css动画库 (animal.css)
    3》利用钩子函数
    4》利用第三方js库

    在vue 提供组件 transition实现过渡
在进入/离开的过渡中,会有 6 个 class 切换。

v-enter:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。

v-enter-active:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。

v-enter-to: 2.1.8版及以上 定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时 v-enter 被移除),在过渡/动画完成之后移除。

v-leave: 定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。

v-leave-active:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。

v-leave-to: 2.1.8版及以上 定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave 被删除),在过渡/动画完成之后移除。

案例1

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<style>
    #box {
        width: 100px;
        height: 100px;
        background-color: red;
    }
    
    .fade-leave-active {
        transition: 1s all;
    }
    
    .fade-leave-to {
        opacity: 0;
    }
    
    .fade-enter {
        opacity: 0;
    }
    
    .fade-enter-active {
        transition: 1s all;
    }
</style>

<body>
    <div id="app">
        <button @click="run">按钮</button>
        <transition name="fade">
            <div id="box" v-show="show"></div>
        </transition>

    </div>

    <script src="../vue.js"></script>
    <script>
        new Vue({
            el: "#app",

            data: {
                show: true,
            },
            methods: {
                run: function() {
                    if (this.show) {
                        this.show = false
                    } else {
                        this.show = true
                    }
                }
            }

        })
    </script>
</body>

</html>

案例2

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<style>
    #box {
        width: 100px;
        height: 100px;
        background-color: red;
    }
    
    .fade-leave-active {
        transition: 1s all;
    }
    
    .fade-leave-to {
        opacity: 0;
        transform: translateX(100px)
    }
    
    .fade-enter {
        opacity: 0;
        transform: translateY(100px)
    }
    
    .fade-enter-active {
        transition: 3s all;
    }
</style>

<body>
    <div id="app">
        <button @click="run">按钮</button>
        <transition name="fade">
            <div id="box" v-show="show"></div>
        </transition>

    </div>

    <script src="../vue.js"></script>
    <script>
        new Vue({
            el: "#app",

            data: {
                show: true,
            },
            methods: {
                run: function() {
                    if (this.show) {
                        this.show = false
                    } else {
                        this.show = true
                    }
                }
            }

        })
    </script>
</body>

</html>

案例3

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<style>
    #box {
        width: 100px;
        height: 100px;
        background-color: red;
    }
    
    .bounce-enter-active {
        animation: bounce-in .5s;
    }
    
    .bounce-leave-to {
        animation: bounce-out .5s;
    }
    
    @keyframes bounce-in {
        0% {
            transform: scale(0)
        }
        50% {
            transform: scale(1.5)
        }
        100% {
            transform: scale(1)
        }
    }
    
    @keyframes bounce-out {
        0% {
            transform: scale(1)
        }
        50% {
            transform: scale(1.5)
        }
        100% {
            transform: scale(0)
        }
    }
</style>

<body>
    <div id="app">
        <button @click="run">按钮</button>
        <transition name="bounce">
            <div id="box" v-show="show"></div>
        </transition>

    </div>

    <script src="../vue.js"></script>
    <script>
        new Vue({
            el: "#app",

            data: {
                show: true,
            },
            methods: {
                run: function() {
                    if (this.show) {
                        this.show = false
                    } else {
                        this.show = true
                    }
                }
            }

        })
    </script>
</body>

</html>

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!