在Vue中使用Animate.css库

2019-03-25  本文已影响0人  李浩然_6fd1

上一节说的是Vue的过渡动画 ,这一节学习下keyframes动画。

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="./vue.js"></script>
    <style>
        @keyframes bounce-in{
            0%{
                transform: scale(0);
            }
            50%{
                transform: scale(1.5);
            }
            100%{
                transform: scale(1);
            }
        }

        .fade-enter-active{
            transform-origin: left center;
            animation: bounce-in 1s;
        }
        .fade-leave-active{
            transform-origin: left center;
            animation: bounce-in 1s reverse;
        }
    </style>
</head>
<body>
    <div id="root">
        <transition name='fade'>
            <div v-if="show">hello world</div>
        </transition>
        <button @click="handleClick">切换</button>
    </div>

    <script>
        var vm = new Vue({
            el:"#root",
            data:{
                show:true
            },
            methods:{
                handleClick:function(){
                    this.show = !this.show
                }
            }
        })
    </script>
</body>

上式代码中,在style中定义了keyframes动画,名字是bounce-in,大括号里面的内容是各个阶段,字体所改变的大小。
定义完之后,在'.fade-enter-active'和'.fade-leave-active'中就可以使用了:animation后面加上keyframes的名字bounce-in,再写上执行完所需的时间,还得再加上transfor-origin,不然演示动画的时候可能会有问题。'.fade-leave-active'也一样,如果我想让离开的动画反向执行,我在animation后面加上reverse。
上面就是keyframes的C3动画。
有个小知识点:style标签中定义的‘.fade-enter-active’和‘.fade-leave-active’这两个名字是可以用自己定义的名字来代替的,不过还是得在transition中定义一下:

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="./vue.js"></script>
    <style>
        @keyframes bounce-in{
            0%{
                transform: scale(0);
            }
            50%{
                transform: scale(1.5);
            }
            100%{
                transform: scale(1);
            }
        }

        .active{
            transform-origin: left center;
            animation: bounce-in 1s;
        }
        .leave{
            transform-origin: left center;
            animation: bounce-in 1s reverse;
        }
    </style>
</head>
<body>
    <div id="root">
        <transition name='fade'
        enter-active-class="active"
        leave-active-class="leave"
        >
            <div v-if="show">hello world</div>
        </transition>
        <button @click="handleClick">切换</button>
    </div>

    <script>
        var vm = new Vue({
            el:"#root",
            data:{
                show:true
            },
            methods:{
                handleClick:function(){
                    this.show = !this.show
                }
            }
        })
    </script>
</body>

我在body中的transition标签中定义了‘enter-active-class’和‘leave-active-class’的自定义的名字分别为‘active’和‘leave’,这样就可以在上面的style标签中使用‘active’和‘leave’这两个名字了。

现在介绍下animate.css库,这个库其实就是keyframes封装而来的。
从网上下载好之后,用链接链接到代码中就可以使用了。

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="./vue.js"></script>
    <link rel="stylesheet" type="text/css" href="./animate.css">
</head>
<body>
    <div id="root">
        <transition name='fade'
        enter-active-class="animated swing"
        leave-active-class="animated shake"
        >
            <div v-if="show">hello world</div>
        </transition>
        <button @click="handleClick">toggle</button>
    </div>

    <script>
        var vm = new Vue({
            el:"#root",
            data:{
                show:true
            },
            methods:{
                handleClick:function(){
                    this.show = !this.show
                }
            }
        })
    </script>
</body>

用animate.css库之后,就不用自己写动画了,直接链接这个库,然后在内容上使用这个库就可以了。
在用的时候,需要注意几点:
1、必须要使用自定义形式的class:“enter-active-class”、“leave-active-class”;
2、自定义形式的class,等号后面必须加一个“animated”这个具体的类,然后添加所需要的动画效果,例子中添加的是swing和shake,

上一篇下一篇

猜你喜欢

热点阅读