【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

  • 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:40898

评论

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

无线LED显示屏的崛起:探索其带来的无限可能

Dylan

通信 科技 LED显示屏 全彩LED显示屏 led显示屏厂家

VMware InstallBuilder Enterprise 24.3.0 安装包制作

影影绰绰一往直前

拒绝数字人直播高额费用青否数字人克隆系统源码部署帮您实现!

青否数字人

数字人

链表-单链表

EchoZhou

链表

Studies for Mac(mac学习记忆工具)v1.8.7直装版

Rose

Word 2021 LTSC for Mac永久版 含word2021激活工具

Rose

KiCad for mac(eda设计工具)

Rose

Ai数字人生成工具数字人克隆系统源码,无限克隆数字人!

青否数字人

数字人

远程桌面管理软件:Apple Remote Desktop中文版下载

Rose

优秀的家居设计助手——Live Home 3D Pro for mac

影影绰绰一往直前

第45期 | GPTSecurity周报

云起无垠

Waves混音效果全套插件:Waves 14 Complete完美破解版及安装教程

Rose

2D动画设计制作软件:cartoon animator4安装教程 含Cartoon Animator破解补丁

Rose

登录系统演进、便捷登录设计与实现

百度Geek说

中台 登录 企业号 4 月 PK 榜 授权

GPT 模型解析:ChatGPT 如何在语言处理领域引领潮流?

测吧(北京)科技有限公司

测试

SQLynx发布3.0.0版本:带来更流畅便捷的SQL开发体验

先锋IT

详解数仓对象设计中序列SEQUENCE原理与应用

华为云开发者联盟

数据库 华为云 华为云开发者联盟 华为云GaussDB(DWS) 企业号2024年4月PK榜

cad 2024 mac下载 cad设计绘图软件,AutoCAD 2024破解版安装教程

Rose

Redis开源协议调整,我们怎么办?

华为云开发者联盟

后端 开发 华为云 华为云开发者联盟 企业号2024年4月PK榜

zFuse Pro 1.7.40 万能视频播放器

影影绰绰一往直前

人人都是创造者!李彦宏2024年首场演讲剧透,这三大方向不容错过

飞桨PaddlePaddle

百度 BAIDU 飞桨 文心大模型 PaddleX

mac虚拟音频设备Loopback for Mac直装版

Rose

Databend 开源周报第 138 期

Databend

新质生产力崛起,运营商前端运营如何跃升

鲸品堂

前端 运营 运营商

Astute Graphics:提升设计效率与创造力的强大插件工具集

Rose

麦乐迪人声修音插件 Celemony Melodyne 5 Studio 直装破解版

Rose

BSN-DID研究--主题一:DID API

BSN研习社

区块链 did

Kyligence 正式加入华为“同舟共济”行动计划,成为行业数智化“联盟级伙伴”

Kyligence

Serial Box 2024.04 Mac软件序列号查询

影影绰绰一往直前

浅谈JVM整体架构与调优参数

华为云开发者联盟

JVM 华为云 Java虚拟机 华为云开发者联盟 企业号2024年4月PK榜

WingPro for Mac注册激活版Python开发环境

影影绰绰一往直前

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