写点什么

会写动画的前端才是好开发(二)

  • 2020-01-07
  • 本文字数:1244 字

    阅读完需:约 4 分钟

会写动画的前端才是好开发(二)

3. canvas 动画

canvas 作为 H5 新增元素,是页面图形绘制的容器,借助 Web API 来实现动画的。通过 getContext()获取元素的绘制对象,通过 clearRect 不断清空画布并在新的位置上使用 fillStyle 绘制新矩形内容实现页面动画效果。


示例:(请点击图片查看大图)



上面的例子画出了一幅 1000*600,淡蓝色背景有动态下雪效果的图片,其中一帧如下图所示:



canvas 的主要优势是可以应对页面中多个动画元素渲染较慢的情况,完全通过 javascript 来渲染控制动画的执行,可用于实现较复杂动画。同样都是使用编码的方式由前端开发工程师完成动画效果,canvas 要比原生 js 效率高的多,流畅的多能够轻松的实现更多的动画效果。


canvas 的缺点是没有提供为其内部元素添加事件监听的方法,需要自己动手实现,使其内部元素能够响应事件。首先获得鼠标在 canvas 上的坐标,计算当前坐标在哪些元素内部,然后对元素进行相应的操作。配合自定义事件,我们就可以实现为 canvas 内的元素添加事件监听的效果。

4. SVG 动画

SVG 用来定义用于网络的基于矢量的图形,其使用 XML 格式定义图像,由 SVG 元素内部的元素属性控制。Svg 不依赖分辨率,基于矢量图,支持事件处理,最适合带有大型渲染区域的应用程序。


示例:(请点击图片查看大图)



上面的例子实现的是一个跳动的心的动图,其中一帧如下图所示:


想看动图的小伙伴请看这里(如无法打开,请复制链接到浏览器):


https://code.h5jun.com/kul


SVG 的一大优势是含有较为丰富的动画功能,原生绘制各种图形、滤镜和动画,并且能被 js 调用。


但是,另一方面元素较多且复杂的动画使用 svg 渲染会比较慢,CSS3 动画的出现让 svg 的应用变得相对少了。


感兴趣的小伙伴请戳这里(如无法打开,请复制链接到浏览器):https://segmentfault.com/a/1190000008215226


另外,还有在不同框架下,也都有自己实现动画的方法,例如 jQuery 中的 show、slide、fade 以及 animate 方法,或者 angularJs 中的 ngAnimate 通过添加或移除 class,使用预定义的样式类来设置 HTML 元素的动画,或者 animate()方法, 在组件对应的模板上直接加动效,AnimationBuilder, 在自定义指令中给宿主元素加动效。


看到这里大家一定很疑惑,既然实现动效的方法有那么多种,那么对于组件来说,应该如何做选择?


这就要结合组件来看了,首先使用 css3 中 animation 和 transition 实现,这种实现方式除了 IE9 及其以下版本不兼容之外,其他浏览器之下都有很好的兼容性。这种实现方式能够将组件样式与组件动画分离开展示,非常有利于后期维护,对国际化和换肤也是十分友好的。


然后根据情况选择 angular 的 ngAnimate 或者 jQuery 中的.animate()方法,因为这两种方法的使用都是有前提和限制的,并不能实现左右的动画效果。



最后,如果以上方法还不能满足你的需求,那就只能使用 JavaScript 中的 setInterval 和 setTimeOut 方法实现了,在定时器中不断修改某个样式的值,直到达到临界值,实现动画。


本转载自 Think 体验设计公众号。


原文链接:https://mp.weixin.qq.com/s/iFs4d7XDcoLA3ZweWMpdwQ


2020-01-07 15:401049

评论

发布
暂无评论
发现更多内容

工作太忙没时间学习,怎么办?

老张

职场成长 认知 学习成长

mac电脑可以玩的Red Alert红色警戒:红警2 for Mac合集

你的猪会飞吗

红色警戒 Mac游戏下载 红警游戏下载

保定等保测评机构有吗?在哪里?

行云管家

网络安全 等保 堡垒机 保定

在线文库网站程序系统源码/app/小程序开发定制

网站,小程序,APP开发定制

RPA是如何为企业创造价值的

八爪鱼采集器︱RPA机器人

RPA 自动化 RPAxAI

从零到精通!新手实测ToDesk云电脑、易腾云、顺网云,云端畅玩黑神话悟空、魔兽世界

颜淡慕潇

游戏 云桌面

小城酒店也要数智化,火山引擎数据飞轮能带去哪些想象?

字节跳动数据平台

大数据 数字化转型 云服务 数据平台 数据飞轮

如何理解RPA的技术架构与原理

八爪鱼采集器︱RPA机器人

RPA 自动化 RPAxAI

类似咸鱼/转转闲置二手商品交易回收商城系统源码定制开发搭建

网站,小程序,APP开发定制

YETUADMIN 野兔二手交易系统 ThinkPHP8

海大集团的可观测平台建设实践

巴辉特

监控 可观测性 Prometheus Nightingale Flashcat

智能BI新突破,看思迈特新品背后的第二增长曲线!

ToB行业头条

荣誉+1 !入选十大科技领先成果!

天翼云开发者社区

云计算 大数据博览会

ps 2022下载:Photoshop 2022 (Win&Mac) 软件直装版下载

你的猪会飞吗

mac软件下载 PS2022下载 ps 2022破解下载

智能未来:低代码与AI如何重塑企业应用开发

天津汇柏科技有限公司

低代码 企业级应用程序开发 AI 人工智能

【论文速读】|RO-SVD:一种用于 AIGC 应用的可重构硬件版权保护框架

云起无垠

【行业知识】餐饮业怎么定义?需要堡垒机吗?

行云管家

等保 堡垒机 餐饮

技术分享丨使用 Knowledge Bases for Amazon Bedrock 制作 RAG 工具

伊克罗德信息科技

大数据 AWS Amazon Bedrock

量化交易丨交易所合约机器人系统开发策略规则/逻辑方案部署

V\TG【ch3nguang】

第65期 | GPTSecurity周报

云起无垠

工作 6 年,@Transactional 注解用的一塌糊涂

程序员小富

Java 事务回滚

RPA项目:RPA工作原理及其应用领域

八爪鱼采集器︱RPA机器人

RPA 自动化 RPAxAI

《算力服务产业图谱(2024年)》发布,天翼云两款产品重磅入选!

天翼云开发者社区

云计算 云服务

海外广告投放成功的关键点有哪些?

IPIDEA全球HTTP

神策SDK不支持Windows客户端全埋点,怎么实现用户统计分析?

ClkLog

C++客户端 C#客户端 C++客户端用户分析 C#客户端用户分析 windows客户端用户分析

【论文速读】| ARVO: 开源软件可重现漏洞的全景图

云起无垠

挖掘大模型行业落地潜力,火山引擎发布AI创作者大赛

Geek_2d6073

数据存储“取经路”,HBlock轻松“渡”!

天翼云开发者社区

云计算 存储 天翼云

免费试听 | AI自动化副业创收班手把手带你提升副业收益

测试人

软件测试

是什么拖慢了医疗云桌面的部署进程?

上海锐起科技

好多kafka难题啊,看看其中的化解之道

王中阳Go

Go kafka 面试 面经

会写动画的前端才是好开发(二)_文化 & 方法_Think体验设计_InfoQ精选文章