动画学习之Animate.css的使用与解析

经典动画库 animate.css 的应用 Animate.css 就像嗑水那么简单的CSS动画。其核心技术使用了 CSS3 里的@keyframes和animation。各大浏览器只要不是太旧的版本都能兼容。 阅读详情

近况

近期生活比较单一。

    const 提升自己 = true;
    while( 提升自己 ) {
        写码
        ...
        看书
        ...
        思考
        ...
        睡觉
    }

既单一也充实,单一使我平静,充实使我保持向上的感觉,希望自己真难做到“持续学习,保持思考,不断进步”。

最近看到腾讯ISUX团队的一篇博客《H5动效的常见制作手法》,里面简单介绍了现在H5开发中实现动画效果的几种方式(GIF,逐帧动画,css3,canvas,svg,video…),实际的内容不多,但对我多少有点启发意义,感兴趣的同学不妨看看。

作为一只前端小菜鸟,前端的各个细分领域都能吸引到我,于是看了上面的博客后,挑了最感兴趣的CSS3动画来学习。对于CSS3动画,我第一个想起的就是animate.css,于是便有了这篇博客。

快速上手animate.css

animate.css

animate.css的主页简单明了,能演示各个动画的效果,目的也很简单,“just-add-water css animations”。那天好奇去搜索了一下作者Daniel Eden,真是酷到不行。

不多说,直接上学习资料:

官方github

估计读完github里面的README.md之后就不用往下看了吧,对于animate.css的用法早已了然于心,如果你还有兴趣,想看看我这个无聊的博主能写些什么东西,希望不会让你失望。

一,静态使用动画(很绕吧…)

  1. 引用animate.css

  2. 给需要动画的元素添加class

    <!-- animated是必须添加的;bounce是动画效果;infinite从语义来看也秒懂,无限循环,不添加infinite默认播放一次 -->
    <div class="animated bounce infinite">动画</div>
  3. 刷新页面就能看到动画这两个字在上下蹦。done,静态使用就这么简单

总结一下场景和优缺点吧,优点是简单呀,添加个类名就一劳永逸了,一行js代码都不用写,缺点是不能人为控制开始和停止。我能想到的场景:

①loading动画

②新开页面某些元素动一次,能吸引用户注意(如注册按钮等)

二,动态使用

掌握了上述用法之后,动态使用也不过小菜一碟。基本思路如下:

给动画对象添加类,然后监听动画结束事件,一旦监听到动画结束,立即移除前面添加的类。

这样一来,想什么时候开始和结束动画都随你了。对于这种用法(也是实际开发中最多的用法),官方给出了jQuery的封装:

//扩展$对象,添加方法animateCss
    $.fn.extend({
        animateCss: function (animationName) {
            var animationEnd = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';
            $(this).addClass('animated ' + animationName).one(animationEnd, function() {
                $(this).removeClass('animated ' + animationName);
            });
    }
});

//使用示例:
$('#yourElement').animateCss('bounce');

因为手上有个小项目没用jQuery这么高大上的库,于是自己写了个js原生的实现,也扩展了一些功能:

    //animate("选择器","动画","次数","时延")
    function animate(seletor, animation_name, count, delay) {
            var target = document.querySelectorAll(seletor)
            var timer = null;
            timer = setInterval( function() {
                target.forEach( function(x) {
                    x.className += " animated " + animation_name;
                    x.addEventListener("animationend", function(){
                    x.className = x.className.replace(" animated " + animation_name, "");
                    });
                } )
                count --;
                if( count <= 0 ) {
                    clearInterval( timer );
                }
            }, delay)
        }
    //使用示例
    animate('.haha', "bounce", 2, 1000);

上面的代码也就是个半成品:

  1. 只监听了”animationend”事件,兼容性不好(可多次调用addEventListener监听其他事件);
  2. 先延时,再执行(将回调函数封装一下,先调用回调函数一次,再进入间隔循环)

源码解析

源码只有一份animate.css,相对简单,下面主要说说三个关键类。

一,animated
设置了动画时长和动画执行前后元素应该怎样应用样式(animation-fill-mode)

.animated {
    -webkit-animation-duration: 1s;
    animation-duration: 1s;
    -webkit-animation-fill-mode: both;
    animation-fill-mode: both;
}

二,infinite

设置了动画次数(无限次)

.infinite {
    -webkit-animation-iteration-count: infinite;
    animation-iteration-count: infinite;
}

三,动画类名(如:bounce)

设置使用的动画,及一些动画的初始化属性。
.bounce {
    -webkit-animation-name: bounce;
    animation-name: bounce;
    -webkit-transform-origin: center bottom;
    transform-origin: center bottom;
}

@keyframes bounce {
  from, 20%, 53%, 80%, to {
    -webkit-animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
    animation-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
    -webkit-transform: translate3d(0,0,0);
    transform: translate3d(0,0,0);
  }

  40%, 43% {
    -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
    animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
    -webkit-transform: translate3d(0, -30px, 0);
    transform: translate3d(0, -30px, 0);
  }

  70% {
    -webkit-animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
    animation-timing-function: cubic-bezier(0.755, 0.050, 0.855, 0.060);
    -webkit-transform: translate3d(0, -15px, 0);
    transform: translate3d(0, -15px, 0);
  }

  90% {
    -webkit-transform: translate3d(0,-4px,0);
    transform: translate3d(0,-4px,0);
  }
}

总的来说实现的原理比较简单,业务组织也很明确,就是三个类,比较有意思的是去研究各个动画的keyframes是怎样的,很有意思(细节远比我想象的要多),例如上面那个bounce动画,从关键帧就能看出很多细节,随意蹦两下那么粗糙。

自定义选项

这个放在最后是因为看了源码之后很自然就无师自通懂得怎么自定义了,例如想用css来控制动画次数等。

#yourElement {
  -vendor-animation-duration: 3s;
  -vendor-animation-delay: 2s;
  -vendor-animation-iteration-count: infinite;
}

else

内联元素(如a标签)不支持bounce动画。

动画学习的最大感悟是,好想去学动画设计呀,好动感。

该博客比较浅显,适合茶余饭后随便读读。

animate.css详解:轻松实现网页动画效果 阅读详情

相关推荐

css动画库animate.css

这些效果涵盖了各种不同的动画类型,包括淡入淡出、滑动、旋转、缩放、弹跳、抖动、脉动等等。是一个开源的 CSS 动画库,它包含了各种各样的预定义动画效果,可以通过简单地添加类名来应用到 HTML 元素上。中包含的常见动画效果包括:淡入淡出、滑动、旋转、缩放、弹跳、抖动、脉动等等。这些效果可以应用于文本、图像、按钮等各种类型的元素,使网页更具吸引力和交互性。提供了一个简单而强大的方法来为网页添加动画效果,无论是为了增强用户体验,提升页面吸引力,还是为了制作交互式内容,都是非常有用的工具。

克里斯蒂亚诺更新的博客 1522

初识Animate.css

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言Animate.css是一个现成的跨浏览器动画库,可用于您的 Web 项目。非常适合强调、主页、滑块和注意力引导提示。一、安装使用安装二、基本用法1.使用方式三、keyframes关键帧 前言 Animate.css是一个现成的跨浏览器动画库,可用于您的 Web 项目。非常适合强调、主页、滑块和注意力引导提示。 官方学习文档网址 一、安装使用 安装 使用 npm 安装: $ npm install animate.css -.

weixin_55747430的博客 4750

前端动画的『降维打击』神器!Animate.css 从入门到精通,彻底释放你的网页活力

Animate.css:前端动画的降维神器 Animate.css是一个纯CSS动画库,通过预设类名让开发者无需编写复杂代码即可实现专业级动画效果。该工具提供上百种开箱即用的动画,涵盖淡入淡出、滑动、弹跳等多种类型,显著提升开发效率。其核心优势包括:优先使用transform/opacity等高性能属性,避免浏览器重绘;轻量级体积(仅几十KB);支持CSS变量定制动画参数;完美兼容主流浏览器。通过简单添加类名即可激活动画,还能结合JavaScript实现复杂交互逻辑,特别适合表单反馈、页面过渡等场景,是提升

wylee的博客 1584

如何使用animate.css动画库

随着前端界面需求以及内容友好度的提高,一个好看的动画往往显得非常重要,接下来我们就来介绍一下如何在HTML以及工程项目中使用animate.css动画库是一个前端的动画库,animate.css官网用npm安装 在js代码中引入即可(这里我推荐在main.js中引入,这样就可以在整个工程文件中使用啦) 1.2、在html文件引入 在head中 2.使用方法 在 transition 标签中给对应动作的类名加上动画库中的类就行啦。 代码如下(示例):

qczzc的博客 9851

使用与解析Animate.css动画库

一旦引入了Animate.css,你就可以开始使用其中提供的动画效果了。每个动画效果都对应一个CSS类,你只需要将该类添加到你希望应用动画的元素上即可。如果Animate.css提供的动画效果不满足你的需求,你可以自定义自己的动画效果。例如,你可以通过修改源代码中的关键帧动画定义来创建新的动画效果。的关键帧动画,该动画使元素从透明度为0和向下偏移100像素的位置渐变到完全可见的透明度为1和不偏移的位置。除了添加动画效果的类之外,Animate.css还提供了一些其他的类来控制动画的播放时机。

HsvvDatabase的博客 373

京东商品数据爬取实战:用Selenium+代理IP绕过最新反爬机制(附完整代码)

本文深入解析京东商品数据采集技术,详细介绍了如何利用Selenium与智能反反爬策略绕过京东最新的反爬机制。通过实战案例和完整代码,帮助开发者掌握高效采集京东商品数据的方法,包括动态参数加密、行为验证识别及分布式采集架构设计等关键技术。

cc789的博客 1059

前端进阶必学必会动画学习之Animate.css的使用与解析:一个强大而酷炫的CSS3动画库Animate.css使用方法教程

资料: Animate.css 使用教程(一个强大的 CSS3 动画库)_rookie的博客-优快云博客前言animate.css 是一个有趣,酷炫的,跨浏览器的动画库,你可以将它用于你的项目中。不管是主页,滑动切换,又或者是其它方面,你都可以通过它来制作出惊人的效果。基本用法引入CSS文件这个对你来说应该再容易不过了,我相信你可能也已经对引入外部的CSS样式文件的代码以及快捷键也都背得滚瓜烂熟了。 你只需要在HTML文件的head标签中引入CSS样式文件,如下:&lt....

南北极之间 2038

WinServer 2012 R2 搭建 AD 单域多站点 及 DNS各站点的子网掩码排序调整

WinServer 2012 R2 搭建 AD 单域多站点 及 DNS各站点的子网掩码排序调整

一直被模仿,从未被超越 5533

Animate.css_动画学习之Animate.css的使用与解析

转自:http://blog.csdn.net/code_for_free/article/details/52075129 近况 近期生活比较单一。 const 提升自己 = true; while( 提升自己 ) { 写码 ... 看书 ... 思考 .

扯文艺的猿的博客 325

国税局发票查验中英文验证码识别,识别率95.2%

国税验证码识别方法介绍

onedayismyway的博客 3134

Neurocomputing 投稿指南

Generation Information:选择论文所属领域。上传附件(利益声明,手稿,摘要)审稿人偏好:可以选择期待的审稿人。

qq_41174671的博客 2万+

2024年Web前端最全Animate,2024年最新字节跳动前端岗面试题

小编综合了阿里的面试题做了一份前端面试题PDF文档,里面有面试题的详细解析开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】WOW.js 依赖 animate.css,所以它支持 animate.css 多达 60 多种的动画效果,能满足您的各种需求具体实现页面滚动效果的步骤如下。

2401_84419493的博客 419

如何在 Windows 中实时打开字幕

在 Windows 操作系统中,你可以使用编程来实现实时字幕功能,以便在屏幕上显示即时的文字内容。下面是一个示例代码,展示了如何使用Python编程语言在Windows上实现实时字幕功能。这样,字幕窗口将会不断地显示系统当前时间作为字幕。你可以根据自己的需求修改主循环中的内容,以显示你想要的实时字幕。希望以上代码和说明能够帮助你在Windows中实现实时字幕功能。函数创建了一个顶级窗口,并设置窗口的样式、位置和大小。方法,用于在字幕窗口中显示指定的字幕内容。上述代码中,我们使用了Python的。

DevWizard的博客 3270

Animate.css动画库下载、安装、使用与解析

(一)uni-app中引入Animate动画库 (1)下载animate动画文件 官方文档: animate动画库的cdn地址: <link href="https://cdn.bootcss.com/animate.css/3.7.2/animate.min.css" rel="stylesheet"> 简单粗暴的下载方法:复制cdn地址,对源码直接复制,保存到记事本,并更改文件名称为animate.css (2)将下载好的animate动画文件添加到自己的项目中,并全局配置

Muchen灬 2万+

uniapp - 热更新提示:WGT安装包中manifest.json文件不存在 | unexpected EOF!报错详细解决,完美搞定WGT安装包中WWW目录下manifest.json不存在问题

uniapp,安卓android,苹果ios,热更新,热更新code:-1202报错,,WGT热更新报错,uniapp热更新wgt出现报错manifest.json文件不存,uniapp安卓苹果软件热更新时出现错误unexpected EOF!如何解决,怎么解决热更新wgt报错,app新版本下载安装报错WGT安装包中manifest.json文件不存在,WGT安装包中WWW目录下manifest.json不存在,uniapp热更新报错安装失败[-1201]:WGT/WGTU文件格式错误,uniapp-wgt

✅ 精选推荐文章 1万+

AIGC实战——变分自编码器(Variational Autoencoder, VAE)

变分自编码器通过在模型中引入随机性,并限制潜空间中的点的分布来解决自编码器存在的问题。只需进行一些微小的调整,就可以将自编码器转换为变分自编码器,从而使其成为真正的生成模型。在本节中,我们介绍了变分自编码器的基本原理,并使用 `Keras` 实现了一个变分自编码器用于生成 Fashion-MNIST 图像。

盼小辉丶的博客 1万+

Animate.css:CSS动画标准化实践与工程化落地指南

CSS动画是现代Web界面体验的核心能力之一,其本质基于@keyframes规则与animation属性的协同工作。理解transform和opacity等合成层友好属性的渲染原理,是实现60fps流畅动效的技术基础。Animate.css并非简单动画集合,而是经过大规模项目验证的CSS动画工程化标准——它通过命名空间隔离、浏览器兼容性兜底、可组合链式触发等设计,将抽象动效转化为语义化class,显著提升团队协作效率与交付稳定性。本文聚焦于Animate.css在真实业务场景中的集成策略、性能优化要点及与H

2411

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

前端动画框架深度解析:Animate CSS vs Anime JS

在现代前端开发中,动画效果已经成为提升用户体验的关键因素。本文将为您深度解析两大流行动画框架:**Animate CSS** 和 **Anime JS**,帮助您选择最适合项目的动画解决方案。这两个框架在前端开发资源库中都有详细收录,为开发者提供了丰富的选择空间。 ## 为什么需要动画框架? 在网页开发中,动画不仅仅是装饰元素,更是引导用户注意力、提供反馈、增强交互体验的重要手段。使用专业的动

gitblog_00668的博客 926

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Animate.css动画库,简单的使用,以及源码剖析

项目演练地址推荐的在线文档社区-MDNcss在线手册包含css3 animate.css是什么?能做些什么? animate.css是一个css动画库,使用它可以很方便的快捷的实现,我们想要的动画效果,而省去了操作js的麻烦。同时呢,它也是一个开源的库,在GitHub的点赞高达5万以上。功能非常强大。性能也足够出色。 如何使用它? 首先你需要到github上下载它,地址 拿到它之后,把animate.css引入到你的html文件。 参考官方的文档(当然了,是英文的哈哈哈,程序员不会英语可万...

Unknowncheats的博客 1357

Animate.css 本质解析:CSS动画标准化接口与工程化实践

CSS动画是Web前端实现交互动效的基础技术,其核心原理基于W3C规范的@keyframes定义与animation属性控制。相较于JavaScript动画库(如GSAP),CSS动画具有原生性能优势和低主线程占用特性,但存在触发机制受限、时长/缓动难动态调整等工程痛点。Animate.css正是为解决这些共性问题而生——它并非运行时动画引擎,而是提供标准化class命名空间与预编译keyframes的CSS动画交付接口,通过animate__前缀规避冲突、默认cubic-bezier缓动统一体验、自动处理

weixin_30781775的博客 444

Animate.css扩展阅读与前沿趋势:AI与Web动画的未来

Web动画与AI技术的结合正引领前端新趋势。本文面向中国AI开发者,系统梳理Animate.css及Web动画的前沿发展、AI辅助动画、Houdini、Web动画API、未来趋势与扩展资源,配合Mermaid思维导图、趋势分析、行业案例、对比表格和实用代码,助力开发者把握智能动画的未来方向。内容涵盖Web动画发展历程、AI融合、现代动画技术对比、Houdini创新、Web动画API、行业趋势、AI开发者专栏等,适合希望提升动画智能化与创新能力的前端与AI开发者。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 991

动画学习之Animate.css

首先给个地址查看下效果: http://www.jq22.com/yanshi819 animate.css的主页简单明了,能演示各个动画的效果,目的也很简单,“just-add-water css animations”。 不多说,直接上学习资料: 官方github 使用方法:(当然你得引入animate.css) 一、静态使用 给需要动画的元素添加

相约9.28,幸福那一刻 424

Animate.scss实战案例:10个创意动画效果代码实现与解析

Animate.scss是基于Dan Eden's Animate.css开发的Sass mixins库,提供了丰富的预定义动画效果,让开发者能够轻松为网页元素添加生动的动画效果。本文将通过10个实战案例,详细解析如何使用Animate.scss实现各种创意动画效果,帮助新手快速掌握这一强大工具的使用方法。 ## 一、项目基础与安装配置 ### 1.1 项目结构概览 Animate.scss

gitblog_00023的博客 813
上一篇: 我为何选择了web前端工程师
下一篇: ReactJS修炼之路(四):组件的性能优化及开发思路
Sheldon_Law
博客等级 码龄11年 44粉丝 32原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值