标签
HTML
正则表达式
Json
包管理工具
vite
CSS
XPath
JavaScript
Jquery
less
ES6
Vue
React
vue 3
Layui
editor.md
sea.js
Zepto.js
mysql.js
mssql.js
NodeJs
Express
前端template
YAML
杂项
外部链接
Vue动画和自定义过渡类名

1、vue应用css3.0中的animation实现动画,在两个关键的时间段enter-active和leave-active添加动画元素即可

animation:第一个值是动画规则的名称[animation-name],可以自定义名称,它是@keyframes的定义的名称,@keyframes是定义一个动画实现过程的规则,动画从开始到结束这个过程中都可以定义不同的变化样式。

animation:第二个值是动画执行需要的时间[animation-duration]

animation:第三个值reverse是动画按反向执行,是[animation-direction]属性中的一个值,其它值检索CSS3.0教程查看

2、vue通过自定义过渡类名实现第三方动画库【animate.css】的引入应用,在transition标签中有两个可自定义类名的属性,进入时间段类名enter-active-class和离开时间段类名leave-active-class,引用第三方库后只要按示例中分别给enter-active-class和leave-active-class属性赋值animate.css中的动画样式类名即可。

3、vue动画中:duration属性是指动画开始前需要延时一段时间后才开始执行,这段延迟时间多久由:duration的值决定,单位是毫秒,:duration="1000"表示进入和离开都有1秒的延迟后才会开始动画,如果要设置进入和离开延时的时间长度不同可以用:duration="{enter:500,leave:1000}"赋值对象的方式实现,这段设置表示进入动画需要延迟0.5秒,离开动画开始前需要延时1秒。

<html>
<hred>
    <meta charset="utf-8">
    <meta name="viewport"
        content="width=device-width,user-scalable=no,initial-scale=1.0, maximun-scale=1.0, minimun-scale=1.0">
    <script src="https://cdn.bootcss.com/vue/2.5.2/vue.js"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.css">
    <style>
        .myAnimate-enter-active {
            animation: myanimate .5s;
        }

        .myAnimate-leave-active {
            animation: myanimate .5s reverse;
        }

        @keyframes myanimate {
            0% {
                transform: scale(0)
            }

            50% {
                transform: scale(1.5)
            }

            100% {
                transform: scale(1)
            }
        }
    </style>
</hred>
<div id="app">
    <div :style="{width:'200px'}">
        <input type="button" @click='flag=!flag' value="进入/离开">
        <transition name="myAnimate">
            <p v-show="flag">我的动画很炫酷</p>
        </transition>
        <transition enter-active-class="animate__bounceIn" leave-active-class="animate__bounceOut" :duration="1000">
            <div v-if="flag">我自带BGM</div>
        </transition>
        <transition enter-active-class="animate__animated animate__zoomInUp"
            leave-active-class="animate__animated animate__zoomOutDown" :duration="{ enter: 500, leave: 800 }">
            <h3 v-if="flag">我比楼上哥们帅</h3>
        </transition>
    </div>
</div>
<script type="text/javascript">
    var vm = new Vue({
        el: "#app",
        data: {
            flag: false
        },
        methods: {}
    })
</script>

</html>


扫一扫手机看
点击排行
订阅号
...