阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

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

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

评论

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

2023高质量Java面试题集锦:高级Java工程师面试八股汇总

采菊东篱下

Java 面试

MobTech 秒验|本机号码一键登录

MobTech袤博科技

首届OceanBase开发者大会|NineData首席架构师谭宇受邀参会,并发表了主题演讲

NineData

多云架构 数据管理 oceanbase 开发者大会 NineData

vue面试题八股文简答大全 让你更加轻松的回答面试官的vue面试题

肥晨

Vue 面试题 金三银四 超全前端面试题

无人机巡检场景小目标检测与量化加速部署方案详解

飞桨PaddlePaddle

人工智能 无人机 目标检测 飞桨 PaddlePaddle

SQL Chat - 基于 ChatGPT 的对话式交互 SQL 客户端

Bytebase

sql database ChatGPT

Vue+Spring-Security前后端分离登录实现

做梦都在改BUG

Mac版cad2024发布 AutoCAD 2024 注册机

Rose

Mac软件 cad cad2024激活版 Autodesk AutoCAD

Github上获赞59.8K的面试神技—1658页《Java面试突击核心讲》

三十而立

Swift之struct二进制大小分析

京东科技开发者

swift 数据结构 struct 二进制 企业号 3 月 PK 榜

钉钉协作Tab前端进化之路

阿里技术

前端 钉钉

数仓安全测试之SSRF漏洞

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

吐血整理!互联网大厂最常见的1120道Java面试题(带答案)整理

架构师之道

Java 面试

视频下载出来为网页格式?如何将视频转换为mp4格式?

Rose

视频格式转换 Mac视频格式转换 视频下载出来为网页

阿里P7架构师的独家分享——SpringCloud 微服务实战笔记

Java你猿哥

Java 架构 微服务 Spring Boot 面经

Swift之struct二进制大小分析

京东科技开发者

swift App struct 移动开发 企业号 3 月 PK 榜

即时通讯技术文集(第11期):IM通信格式的选型及Protobuf专题 [共16篇]

JackJiang

网络编程 即时通讯 IM

IPv6是什么意思?哪款堡垒机支持IPv6资产纳管?

行云管家

资产管理 堡垒机 ipv6

Java基础_面试题

三十而立

聊聊不太符合常规思维的动态规划算法

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

工作10年,面试超过300人想进阿里的同学,总结出的java面试69题

三十而立

Java java面试

裸辞跳槽底气!字节在职大佬“Java面试总汇2023”大厂都在考

Java你猿哥

Java 面试 ssm 面经 Java工程师

揭秘网页性能监控|如何从多个角度分析监控结果

云智慧AIOps社区

监控 监控宝 网站监控 网页性能优化 监控产品

百度内容理解推理服务FaaS实战——Punica系统

百度Geek说

云原生 Faas 成本优化 企业号 3 月 PK 榜 AI推理

Java开发新手必读:PO、VO、DAO、BO、DTO、POJO,区别在哪儿?

Java你猿哥

Java 后端 ssm Java工程师 Java基础知识点

OceanBase 信息技术服务管理体系通过 ISO20000 认证和 ITSS 认证

OceanBase 数据库

数据库 oceanbase

苹果发布macOS Ventura 13.3正式版更新

Rose

mac系统 苹果最新系统 macOS Ventura 13.3

玩转 ChatGPT+极狐GitLab|分分钟丝滑迁移Jenkins到极狐GitLab CI

极狐GitLab

ci DevOps jenkins CI/CD 极狐GitLab

为什么 MySQL 不推荐使用 join?

Java你猿哥

Java MySQL sql 后端 ssm

四个上海等保小知识汇总-行云管家

行云管家

等保 等级保护 等保测评 上海

火山引擎DataTester推出可视化数据集成方案

字节跳动数据平台

数据集成 ab测试 A/B 测试 可视化开发 企业号 3 月 PK 榜

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