Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >29.Vue-使用第三方animate.css类库实现动画

29.Vue-使用第三方animate.css类库实现动画

作者头像
Devops海洋的渔夫
发布于 2022-01-17 01:24:50
发布于 2022-01-17 01:24:50
4K00
代码可运行
举报
文章被收录于专栏:Devops专栏Devops专栏
运行总次数:0
代码可运行

概述

Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。 包括以下工具:

  • CSS 过渡和动画中自动应用 class
  • 可以配合使用第三方 CSS 动画库,如 Animate.css
  • 在过渡钩子函数中使用 JavaScript 直接操作 DOM
  • 可以配合使用第三方 JavaScript 动画库,如 Velocity.js

上一篇说明了使用「过渡类名」来实现动画效果,但是每个动画都要自己去写的话,其实是一个挺麻烦的事情,本篇章来说明使用第三方css动画库「Animate.css」来实现动画效果。

Animate.css 库介绍

简介

animate.css 是一个来自国外的 CSS3 动画库,它预设了抖动(shake)、闪烁(flash)、弹跳(bounce)、翻转(flip)、旋转(rotateIn/rotateOut)、淡入淡出(fadeIn/fadeOut)等多达 60 多种动画效果,几乎包含了所有常见的动画效果。

虽然借助 animate.css 能够很方便、快速的制作 CSS3 动画效果,但还是建议看看 animate.css 的代码,也许你能从中学到一些东西。

相关网址

animate.css中文网:http://www.animate.net.cn/

image-20200131234307872

在进入Animate中文网之后,可以查看部分的在线演示。

可以看到介绍,使用animate库非常简单,下面来看看如果引入使用。

下载animate库

下载地址:https://daneden.github.io/animate.css/

直接点击这个地址下载的话,我目前访问页面失败。然后我又默默去Github中的release页面来下载。

https://github.com/daneden/animate.css/releases

解压下载的zip包,可以看到animate.css的相关文件:

在项目中开发中,只需要导入这个animate.min.css 压缩文件即可。

使用示例 1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!--    第一步. 引入animate.css文件    -->
    <link rel="stylesheet" href="lib/animate.css-3.7.2/animate.min.css">

</head>
<body>

    <!--    使用animate库的fadeInUP动画效果     -->
    <div class="animated fadeInUp">
        <h1>hello world</h1>
    </div>

</body>
</html>

浏览器执行效果,如下:

上面的示例给元素加上 class 后,刷新页面,就能看到动画效果了。animated 类似于全局变量,它定义了动画的持续时间;bounce 是动画具体的动画效果的名称,你可以选择任意的效果。

如果动画是无限播放的,可以添加 class infinite,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!--    使用animate库的fadeInUP动画效果     -->
<div class="animated fadeInUp infinite">
    <h1>hello world</h1>
</div>

使用示例 2

你也可以通过 JavaScript 或 jQuery 给元素添加这些 class,比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(function(){
    $('#dowebok').addClass('animated bounce');
});

有些动画效果最后会让元素不可见,比如淡出、向左滑动等等,可能你又需要将 class 删除,比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(function(){
    $('#dowebok').addClass('animated bounce');
    setTimeout(function(){
        $('#dowebok').removeClass('bounce');
    }, 1000);
});

animate.css 的默认设置也许有些时候并不是我们想要的,所以你可以重新设置,比如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#dowebok {
    animate-duration: 2s;    //动画持续时间
    animate-delay: 1s;    //动画延迟时间
    animate-iteration-count: 2;    //动画执行次数
}

注意添加浏览器前缀。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-ms- 兼容IE浏览器
-moz- 兼容firefox
-o- 兼容opera
-webkit- 兼容chrome 和 safari

完整示例代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>

    <!--    第一步. 引入animate.css文件    -->
    <link rel="stylesheet" href="lib/animate.css-3.7.2/animate.min.css">

    <!--    编写js控制animate动画类 -->
    <script src="lib/jquery/jquery-3.4.1.min.js"></script>
    <script>
        $(function(){
            $('#dowebok').addClass('animated bounce');
            setTimeout(function(){
                $('#dowebok').removeClass('bounce');
            }, 1000);
        });
    </script>

</head>
<body>

    <!--    使用js控制animated的动画类     -->
    <div id="dowebok">
        <h1>Bounce</h1>
    </div>

</body>
</html>

浏览器显示如下:

更多的动画效果,可以根据在线演示来查看,如下:

https://daneden.github.io/animate.css/

下面来看看如何在Vue框架中应用。

在Vue框架中应用animate.css库

使用enter-active-classleave-active-class应用css动画

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--  1.导入vue.js库  -->
    <script src="lib/vue.js"></script>
    <!--  2.导入animate.css  -->
    <link rel="stylesheet" href="lib/animate.css-3.7.2/animate.min.css">
</head>
<body>

    <div id="app">

        <!-- 使用v-on绑定click事件执行切换show变量,用于控制下面p标签的v-if -->
        <button @click="show = !show">
            Toggle render
        </button>

        <!-- 设置transition,使用enter-active-class设置入场的效果,使用leave-active-class设置离场的效果  -->
        <transition enter-active-class="animated bounceIn" leave-active-class="animated bounceOut" >
            <p v-if="show">hello</p>
        </transition>

    </div>

    <script>
        // 2. 创建一个Vue的实例
        var vm = new Vue({
            el: '#app',
            data: {
                show: true
            },
        })
    </script>

</body>
</html>

浏览器显示效果如下:

当点击隐藏「hello」的时候,使用「bounceOut」显示离场的效果。

当点击显示「hello」的时候,使用「bounceIn」显示入场的效果。

在上面可以看到两个class中都需要去写animated,如下:

能否优化一下呢?不用每个class都去写一遍,这样多麻烦。

优化animeted的填写位置
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        <!-- 设置transition,使用enter-active-class设置入场的效果,使用leave-active-class设置离场的效果  -->
        <transition enter-active-class="bounceIn" leave-active-class="bounceOut" >
            <p v-if="show" class="animated">hello</p>
        </transition>

显性的过渡持续时间

❝2.2.0 新增 ❞

在很多情况下,Vue 可以自动得出过渡效果的完成时机。默认情况下,Vue 会等待其在过渡效果的根元素的第一个 transitionendanimationend 事件。然而也可以不这样设定——比如,我们可以拥有一个精心编排的一系列过渡效果,其中一些嵌套的内部元素相比于过渡效果的根元素有延迟的或更长的过渡效果。

在这种情况下你可以用 组件上的 duration 属性定制一个显性的过渡持续时间 (以毫秒计):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<transition :duration="1000">...</transition>

你也可以定制进入和移出的持续时间:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<transition :duration="{ enter: 500, leave: 800 }">...</transition>
使用:duration设置动画统一的运行时长

上面只是设置了一些动画效果,但是如果需要设置动画的运行时长,那么则需要设置「duration」,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--  1.导入vue.js库  -->
    <script src="lib/vue.js"></script>
    <!--  2.导入animate.css  -->
    <link rel="stylesheet" href="lib/animate.css-3.7.2/animate.min.css">
</head>
<body>

    <div id="app">

        <!-- 使用v-on绑定click事件执行切换show变量,用于控制下面p标签的v-if -->
        <button @click="show = !show">
            Toggle render
        </button>

        <!-- 设置transition,使用enter-active-class设置入场的效果,使用leave-active-class设置离场的效果  -->
        <transition enter-active-class="bounceIn" leave-active-class="bounceOut" :duration="200">
            <p v-if="show" class="animated">hello</p>
        </transition>

        <hr>

        <transition enter-active-class="bounceIn" leave-active-class="bounceOut" :duration="1500">
            <p v-if="show" class="animated">hello</p>
        </transition>

    </div>

    <script>
        // 2\. 创建一个Vue的实例
        var vm = new Vue({
            el: '#app',
            data: {
                show: true
            },
        })
    </script>

</body>
</html>

浏览器执行如下:

上面设置入场和离场的运行时长都是一致的,如果需要拆分,可以单独设置如下。

使用:duration分开设置动画的入场和离场的运行时长

使用字典就可以分开设置入场enter和离场leave的运行时长。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<transition enter-active-class="bounceIn" leave-active-class="bounceOut"
            :duration="{ enter:200, leave:1500 }">
    <p v-if="show" class="animated">hello</p>
</transition>
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海洋的渔夫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Vue教程(动画-基础入门)
  在我们显示的页面中动画对于我们来说虽然不是必须的,但是必要的一些动画效果能够提高用户的体验,帮助用户更好的理解页面中的功能。所以本文就来给大伙介绍下动画的基础内容。
用户4919348
2019/07/22
1.2K0
(八)集成第三方库动画
集成第三方库,需要做一些配置,因为配置 Transition 和 TransitionGroup 是一样的,所以这里拿 Transition 做演示,他们可以通过 props 的方式来自定义 class 参数为一下6种
老怪兽
2023/02/22
1550
(八)集成第三方库动画
十一.Vue过渡动画
本文最后更新于 870 天前,其中的信息可能已经有所发展或是发生改变。 1. 使用过渡类 <style> .v-enter,.v-leave-to{ opacity: 0; transform: translateX(200px) } .v-enter-active,.v-leave-active{ transition: all 0.8s ease } </style> <transition> <h1 v-if="flag">Hello</h1> </tra
Yuyy
2022/06/28
6420
【Vue3 从入门到实战 进阶式掌握完整知识体系】020-Vue中的动画:使用 transition 标签实现单元素组件的过渡和动画效果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZYhtzHIW-1624976737549)(https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/be9f674f6e2d474dba33d92b24d52b23~tplv-k3u1fbpfcp-watermark.image)]
訾博ZiBo
2025/01/06
1860
【Vue3 从入门到实战 进阶式掌握完整知识体系】020-Vue中的动画:使用 transition 标签实现单元素组件的过渡和动画效果
终于不再对transition和animation,傻傻分不清楚了 --vue中使用transition和animation
以前写页面注重在功能上,对于transition和animation是只闻其声,不见其人,对于页面动画效果心理一直痒痒的。最近做活动页面,要求页面比较酷炫,终于有机会认真了解了。
huofo
2022/03/18
1.6K0
vue中使用animate css
安装 安装的方式有很多种 1.在html文件中直接引用从github上下载的资源
全栈程序员站长
2022/09/19
1K0
vue.js之动画篇
本文引入类库的方式均采用CND的方式,可直接复制代码到编辑器中学习和测试 不使用动画切换元素 1 <div id="app"> 2 <input type="button" value="toggle" @click="flag=!flag"> 3 <!-- 需求:点击按钮,让h3显示,再点击让h3隐藏 --> 4 <h3 v-if="flag">这是一个H3</h3> 5 </div> 6 <script> 7 // 创建Vue实例,得到ViewM
指尖改变世界
2018/08/31
1.5K0
50·灵魂前端工程师养成-Vue动画
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/11/08
4730
50·灵魂前端工程师养成-Vue动画
通过示例了解Vue过渡和动画
Vue过渡和动画让我们网站更具现代感并为网站访问者提供更好的用户体验的好方法。 幸运的是,对于开发人员而言,Vue动画只需几分钟即可完成设置。
前端小智@大迁世界
2022/06/15
1.9K0
通过示例了解Vue过渡和动画
Vue使用animation.css动画库
由于使用第三方库,需要使用指定class,所有要之定义class值,使用enter-active-class和leave-active-class,必须包括animated和动画名称!
十月梦想
2018/10/09
2.4K0
Vue3 | 动画专题
-- 使用@keyframes [关键帧实例名]配置好关键帧; -- 使用animation配置关键帧以及动画过程到完成的时延, 完成动画的定义【写在一个CSS类中(如下的myAnimation)】; -- 在data中定义一个以 上面定义的动画CSS类实例(如myAnimation) 为属性值的 数据字段(如myAnimateData); -- 在dom中使用:class=[以 动画CSS类实例 为属性的 数据字段], 引用这个数据字段(myAnimateData)即可,至此完成动画定义; -- 数据字段(如myAnimateData)中,可以通过对 属性值即动画CSS类实例的 布尔值的 改变, 去控制动画的开关,如下 配置false 为关:
凌川江雪
2021/04/09
1.4K0
Vue3 | 动画专题
Vue2使用过渡标签transition使用动画
【给来和走的样式的名字定义为 v-enter-active | v-leave-active,设置name的值,需要把v 改成它】
打不着的大喇叭
2024/03/11
2650
Vue2使用过渡标签transition使用动画
Vue-transition组件的Css动画+过渡(1)入门,笔记总结 “建议收藏”
这里说一下transition: property duration timing-function delay; 一共有四个参数可选;
玖柒的小窝
2021/09/29
1.6K0
animate.css的使用
animate.css是一个使用CSS3的animation制作的动画效果的CSS集合,里面预设了很多种常用的动画,且使用非常简单。本文将详细介绍animate.css的使用
全栈程序员站长
2022/09/07
9180
animate.css的使用
Vue动画与生命周期详解
Vue为vue动画提供的六个类: transition标签的name-enter, transition标签的name-leave 动画开始前动画元素的初始状态的 transition标签的name-enter-to, transition标签的name-leave-to 动画结束时元素的状态 transition标签的name-enter-active, transition标签的name-leave-active 动画的过渡状态
生南星
2019/07/22
6070
Vue动画与生命周期详解
Vue一个案例引发「动画」的使用总结
项目开发中动画有着很重要的作用,而且也是用到的地方非常多,例如:鼠标的进入离开,弹窗效果,组件的显示隐藏,列表的切换等等,可以说我们网页上的动画无处不在,也有人说了,这些东西也可以不使用动画。
六小登登
2018/12/01
1.1K0
Vue 开发经验小记(持续更新)
<component> 是vue官方提供的标签,通过更改 is 指向的子组件名来动态切换组件。
solocoder
2022/04/06
2.9K0
Vue 开发经验小记(持续更新)
Vue同时使用transition(过渡)和animate.css(动画库)
    解决第一次出现没有动画新增apper属性点添加apper-active-class,同时使用过渡和动画,可以在class中新增过渡的calss,v-enter-active,v-leave-active,动画时间以哪个为准可以设置tyep=animation或者transition,也可以自定义动画时长,:duration传入数字(ms)或者传入对象enter和leave分别时长,
十月梦想
2018/10/09
3.9K0
使用animate库
按 官方文档 (opens new window) 引入Animate.css库,再配合vue的自定义过渡类名,指定enter-active-class和leave-active-class的自定义类,两者都要有animated类,用于说明其使用的是Animate.css库,再根据需求定义另外一个动画类名。
小小杰啊
2022/12/21
1.1K0
【云+社区年度征文】Vue深入dom到组件动画
MV,VM是Vue提供,关注model操作(es5:obj.properties(对象性能、内容)+虚拟dom)
瑞新
2020/12/18
2.4K0
【云+社区年度征文】Vue深入dom到组件动画
相关推荐
Vue教程(动画-基础入门)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验