写点什么

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

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

    阅读完需:约 4 分钟

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

动画是通过把某一动态过程分解后,画成许多动作瞬间的画幅,再用摄影机连续拍摄成一系列画面,给视觉造成连续变化的图画。它的基本原理与电影、电视一样,都是视觉暂留原理。医学证明人类具有“视觉暂留”的特性,人的眼睛看到一幅画或一个物体后,在 0.34 秒内不会消失。


利用这一原理,在一幅画还没有消失前播放下一幅画,就会给人造成一种流畅的视觉变化效果。相信很多人都看过动画片,或者手翻书,其实它们与电视、电影的原理都是一样的。



动画如何实现


  1. Javascript 直接实现动画;

  2. css3 动画中的 transition 和 animation;

  3. Canvas 动画;

  4. SVG(可伸缩矢量图形);

1. Javascript 直接实现动画

Javascript 直接实现动画,主要是通过 setInterval 或 setTimeout 方法的回调函数来持续调用改变某个元素的 CSS 样式以达到元素样式变化的效果,或者使用 requestAnimationFrame;


示例:



上面示例的效果是一个灰色的小方块,慢慢的从左边,移动到屏幕右边的动画,每隔 16ms 就把方块的左外边距增加 1px。尽管过程看起来很连贯,但是这种方法依然存在一些问题。


因为 JavaScript 是单线程的,setTimeout 是异步操作,加入任务队列后,当 js 引擎线程中同步代码执行完才会从任务队列中取出执行,可能发生阻塞。另外 setTimeOut 会导致页面频繁性重排重绘,消耗性能,一般应该在桌面端浏览器,而且不同浏览器对 setTimeOut 的解析也是不同的,导致同一动画在不同浏览器下效果不一致,在移动端上使用会有明显的卡顿。


requestAnimationFrame 实现动画的优点是可以避免不必要的过度重绘,但是整体性能和可调节性都不如 css3 动画。

2. css3 实现动画

Transition


Transition 可以实现过渡动画的效果,但是 transition 并不能实现独立的动画,只能在某个标签元素样式或状态改变时进行平滑的动画效果过渡,而不是马上改变。 transition 抓住了所设置变化属性的起始态和完成态,通过设定的速度曲线来完成动画,不支持自定义中间的状态。可以设置发生变化的 css 属性,默认为 all,则所有变化的属性都会在触发时,以动画的形式展现出来。如果把 transition 和 transform 配合使用,对元素进行平移、倾斜、缩放,使动画更加丰富生动。


transition 语法如下:


transition:property duration timing-function delay;


具体属性值介绍如下:



示例:



Animation


Animation 算是真正意义上的 CSS3 动画。使用 animation 属性制作动画可以更加灵活的设置动画,通过对关键帧及其状态以及循环次数的控制,页面元素会在对应的时间按照设定好的样式改变进行平滑过渡。不过区别于 Transition,Animation 作用于元素本身而不是样式属性,不局限于只有初始状态和结束状态,可以实现更自由的动画效果。


animation 语法如下:


animation: nameduration timing-function delay iteration-count direction;


具体属性值介绍如下:



关键帧定义:



示例:


大风车


华语群星 - 央视“启航 2016”跨年晚会



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


http://www.cnblogs.com/yingzi1028/p/7768595.html


使用 CSS3 transition 和 animation 实现动画,它最大的优势是摆脱了 js 的控制,并且能利用硬件加速以及实现复杂动画效果,但是会存在浏览器兼容性问题。


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


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


2020-01-07 15:401470

评论

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

EDGNEX与Hyperco建立合作关系

财见

芯盾时代全线产品接入DeepSeek 让企业数字化业务更安全

芯盾时代

零信任 DeepSeek

【灯塔计划】【积微成著】规模化混沌工程体系建设及AI融合探索

京东科技开发者

吉卜力风图像席卷社交潮流,GPU正在「融化」

PowerVerse

动画 AI‘’ gpu 算力

RealClip:轻量级战略能否打开全球小游戏市场的巨额潜力?

xuyinyin

低代码时代来临,中小企业如何抓住数字化转型机遇?

天津汇柏科技有限公司

低代码 数字化转型

等保整改服务

黑龙江陆陆信息测评部

微信分享的CAD图纸在电脑上打不开是怎么回事?

在路上

cad cad看图 CAD看图王

LED小间距:拉动显示屏商显市场的主要动力

Dylan

LED LED display LED显示屏 市场 LED屏幕

Rust 中的高效视频处理:利用硬件加速应对高分辨率视频

Yeauty

rust ffmpeg Video media audio

基于阿里云可观测产品构建企业级告警体系的通用路径与最佳实践

阿里巴巴云原生

云计算

离线VS强制登录?Apipost与Apifox的API工具理念差异深度解析

数据追梦人

【LangChain】一文读懂RAG基础以及基于langchain的RAG实战

京东科技开发者

在HarmonyOS NEXT 开发中,如何指定一个号码,拉起系统拨号页面

威哥爱编程

HarmonyOS HarmonyOS NEXT

怎么用AI制作甘特图?7个甘特图生成工具盘点!

职场工具箱

人工智能 项目管理 甘特图 AI软件 AIGC

字符串替换研究

京东科技开发者

美国数学奥赛题,六套AI模型得分不足5%!

grandocean

Claude LLM模型 openai o1 QwQ DeepSeek R1 模型

相比于DeepSeek,Manus有哪些优势

老张

大模型 DeepSeek Manus

2025 年 AppSheet 最佳开源替代品

NocoBase

开源 低代码 零代码 无代码 AppSheet

CAD如何进行图形统计并导出表格?

在路上

cad cad看图 CAD看图王

基于控制面单元化的 Kubernetes 集群联邦

字节跳动开源

Kubernetes 多集群管理 控制面单元化 资源调度优化 容灾备份策略

混合APP的性能测试

北京木奇移动技术有限公司

APP开发 混合app开发 软件外包公司

阿里云 AI 搜索开放平台新发布:增加 QwQ 模型

阿里云大数据AI技术

人工智能 阿里云 强化学习 AI搜索 QwQ

2025年春招:如何使用DeepSeek优化简历,轻松敲开心仪公司的大门

Y11

Java 面试 简历 笔试 春招

拼多多商品详情接口(pdd.item_get)

tbapi

拼多多商品详情接口 拼多多API 拼多多商品数据采集

支持东方40语种+中国22方言的新SOTA语音大模型Dolphin开源

极客天地

如何在 IDE 里使用 DeepSeek?

阿里巴巴云原生

云计算 通义灵码

中小企业怎么低成本实现智改数转

积木链小链

数字化转型 智能制造 中小企业

Apple Safari 18.4 - macOS 专属浏览器 (独立安装包下载)

sysin

safari

AI to B奇点将至,“伙伴+华为”体系如何跨越数智鸿沟?

Alter

实测对比|法国AI独角兽公司发布的“最强OCR”,实测效果如何?

合合技术团队

人工智能 算法 OCR #大模型

会写动画的前端才是好开发(一)_语言 & 开发_Think体验设计_InfoQ精选文章