| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> 前端动画实现浅析(前端常用动态解决方案) -> 正文阅读 |
|
[游戏开发]前端动画实现浅析(前端常用动态解决方案) |
我们从动画的实现方法入手,了解浏览器的渲染,以及如何提升动画的性能。 一、常见动画实现方法:1. GIF动画gif 文件可以存多幅彩色图像,当数据逐幅读出并展示都在屏幕上,就可以构成一个简单的动画。 场景:GIF 比较适用于色彩较少的图片,比如页面卡通 icon、标志等等。 优点:?1.制作的成本很低; 2.兼容性好; 3.方便开发使用。 缺点:?1.画质上:色彩支持少,图像毛边严重; 2.交互上:不能控制动画的播放暂停,没有灵活性; 3.大小上:由于是无损压缩,每帧被完整的保存下来,导致文件很大。 2.?css3 补帧动画1)transition 过渡动画 transition只需指定动画的开始和结束状态,整个动画的过程是由特定的函数控制。 transition是过度动画。但是transition并不能实现独立的动画,只能在某个标签元素样式或状态改变时进行平滑的动画效果过渡,而不是马上改变。 场景:常与 :hover, :active 等伪类使用,实现相应等动画效果。 缺点:?在移动端开发中,直接使用transition动画会让页面变慢甚至卡顿。 2)animation 关键帧动画 animation 算是真正意义上的CSS3动画。通过对关键帧和循环次数的控制,页面标签元素会根据设定好的样式改变进行平滑过渡。而且关键帧状态的控制是通过百分比来控制的。 场景:?比如:loading 展示。 优点:?1、无需每一帧都被记录,通过关键帧设置,方便开发; 2.实现简单,通常 UI 可以直接给到 css 文件,前端只需要导入即可【移动端注意屏幕适配】。 缺点:?1.css 没法动画交互,无法得知当前动画执行阶段; 2.transition: 需要触发,无法自动播放; 3.animation 兼容性需要加前缀,导致代码量成倍增长; 4.对于复杂动画的实现,导入的 css 文件过大,影响页面的渲染树生成,从而阻塞渲染。比如实现一个摇钱树的效果,css 文件达到百 kb,就要采取一些必要的压缩手段,缩减文件大小。 3)js 逐帧动画 JS 动画的原理是通过 setTimeout 或 requestAnimationFrame 方法绘制动画帧,从而动态地改变 网页中图形的显示属性(如 DOM 样式,canvas 位图数据,SVG 对象属性等),进而达到动画的目的。 通过setInterval或setTimeout方法的回调函数来持续调用改变某个元素的CSS样式以达到元素样式变化的效果。 缺点:javascript 实现动画通常会导致页面频繁性重排重绘,消耗性能,一般应该在桌面端浏览器。在移动端上使用会有明显的卡顿。 3. Canvas动画canvas作为H5新增元素,是借助Web API来实现动画的。 Canvas主要优势是可以应对页面中多个动画元素渲染较慢的情况,完全通过javascript来渲染控制动画的执行。可用于实现较复杂动画。 4.?SVG(可伸缩矢量图形)SVG是一种基于XML的图像格式,非常类似于HTML的工作方式。它为许多熟悉的几何形状定义了不同的元素,这些元素可以在标记中组合以产生二维图形; 同样高清的质地,矢量图不畏惧放大,体积小。 SVG动画由SVG元素内部的元素属性控制,一般通过一下几个元素控制:
优点:?SVG的一大优势是含有较为丰富的动画功能,原生绘制各种图形、滤镜和动画,并且能被js调用。html是对dom的渲染,那么svg就是对图形的渲染。 5.?requestAnimationFrame?requestAnimationFrame是另一种Web API,原理与setTimeout和setInterval类似,都是通过javascript持续循环的方法调用来触发动画动作。但是requestAnimationFrame是浏览器针对动画专门优化形成的APi,在性能上比另两者要好。通常,我们将执行动画的每一步传到requestAnimationFrame中,在每次执行完后进行异步回调来连续触发动画效果。 6. 3D动画DOM操作,用CSS 3D实现。(perspective属性等) 场景搭建用webGL(Three.js等) 3D模型动画用blender或maya等制作完成后导出使用。 二. 总结动画基本上分类两类:补间动画和帧动画。
复杂的动画是通过一个个简单的动画组合实现的。基于兼容性问题,通常在项目中,一般在 桌面端浏览器推荐使用javascript直接实现动画或SVG方式;
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/17 4:01:04- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |