合适的动画不仅更能吸引人们的眼球,也能让你的应用体验更为流畅,而将动画的效果做到极致,才能让用户感到使用你的应用是一种享受,而不是觉得生硬和枯燥。本文旨在探讨各种前端动画效果实现方式的异同,具体应用中如何实现,以及实现的效果还得根据自身的情况进行考量。

 Javscript 动画

  因为没有其它可用的实现方式,最初的前端动画都是JS来实现,实现上就是通过一个定时器setInterval 每隔一定时间来改变元素的样式,动画结束时clearInterval即可。早期的类库包括 jquery、prototype、mootools 等等都是这种方式。

  尽管这种方式动画的可控性很强,但是问题也很明显:

  • 性能不佳,因为需要不断获取和修改Dom的布局,所以导致了大量页面重排(repaint)

  • 缺乏标准,不同的库使用了不同的API,导致即使是简单的动画也有各不相同的实现方式,调整起来比较耗时

  • 带宽消耗,相对丰富的动画库代码量都很大,结果就是增加了http请求的大小,降低了页面的载入时间

 css3 动画

  css3 加了两种动画的实现方式,一种是 transition, 一种是 animation。

  transition 包含4种属性:transition-delay transition-duration transition-property transition-timing-function,对应动画的4种属性: 延迟、持续时间、对应css属性和缓动函数,

  transform 包含7种属性:animation-name animation-duration animation-timing-function animation-delay animation-direction animation-iteration-count animation-fill-mode animation-play-state,它们可以定义动画名称,持续时间,缓动函数,动画延迟,动画方向,重复次数,填充模式。

  总的来书,css 动画相比与JS更轻量,性能更好,更易于实现,同时也不必担心缺乏标准和增加带宽消耗的问题。animation 相比 transtion 使用起来更为复杂,但也提供了更多的控制,其中最重要的就是 frame 的支持,不过通过一些简单的JS库,例如 TJ 的 move.js, 我们也能在JS中通过 transition 来实现更复杂的控制。

 html5 动画

  html5 定义了三种绘图的方式,canvas svg webgl,其中svg做为一种可缩放矢量图形的实现是基于xml标签定义的,它有专门的 animate 标签来定义动画。而为 canvas 或者 webgl 实现动画则需要通过 requestAnimationFrame (简称 raf) 来定期刷新画布。 尽管说 raf 的方式会让代码变得复杂,但是因为不需要那么多的文档对象(通常浏览器只需要管理一个画布),它的性能也好很多,尤其是在内存吃紧的移动端上面。

  通过新的 raf 接口以及一些改进手段我们也可以用JS来实现高性能的动画。主要手段如下:

  1. 减少 Dom 样式属性查询,Dom 样式属性的查询会导致页面重排,从而消耗性能,通过将属性保存在JS变量中就可以避免在动画时去查询,从而减少卡顿。

  2. 使用性能更好的 css transform 替代改变绝对定位元素的定位属性

  3. 在移动设备上使用 3d 硬件加速,最简单办法就是添加 -webkit-transform: translateZ(0),原因是移动端的显卡有很强的图形渲染能力,而每个应用的 webview 内存却是极其有限的。

  使用JS的动画可控性更好,比如说通过事件捕捉可以很容易的设定不同参数。这方面做的最全面的有 Velocity.js,它可做为jquery 插件使用,对于初学者很友好。

via:https://segmentfault.com/a/1190000000594926

前端实现3d效果_前端动画效果实现的简单比较相关推荐

  1. JS实现仿新浪微博大厅和腾讯微博首页滚动效果_前端开发

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  2. 【前端实例代码】霓虹灯按钮动画效果悬停2| html CSS特效 惊艳| 前端开发 网页制作 基础入门教程

    b站视频演示效果: [web前端特效源码]霓虹灯按钮动画效果悬停2| html CSS特效 惊艳| 前端开发 网页制作 基础入门教程 效果图: 完整代码: <!DOCTYPE html> ...

  3. 【前端实例代码】霓虹灯按钮动画效果悬停| html CSS特效 惊艳| 前端开发 网页制作 基础入门教程

    b站视频演示效果: [web前端特效源码]霓虹灯按钮动画效果悬停| html CSS特效 惊艳| 前端开发 网页制作 基础入门教程 效果图: 完整代码: <!DOCTYPE html> & ...

  4. 搜索效果和搜索动画效果

    搜索效果和搜索动画效果 开发工具与关键技术:DW 搜索效果 作者:周欢 撰写时间:2019/2/20 在生活中我们不难发现,往往大的软件都会有便捷的获取方式.因为软件越大功能也会相对的多一些,功能的繁 ...

  5. android+百叶窗动画效果,js实现横向百叶窗效果网页切换动画效果的方法

    本文实例讲述了js实现横向百叶窗效果网页切换动画效果的方法.分享给大家供大家参考.具体分析如下: 这是一款很简洁但是效果却不错的网页切换效果,点击新网页后,网页会出现蓝白相间的百叶窗线条自动切换,直到 ...

  6. 前端必备的Canvas接口和动画效果的总结

    来源 | https://segmentfault.com/a/1190000021998875 概述 <canvas>元素用于生成图像.它本身就像一个画布,JavaScript 通过操作 ...

  7. iOS实现“下雨下雪”动画效果和“烟花”动画效果

    "下雨"的动画效果 一.效果展示 二.实现流程 设置背景 func setupUI() {self.imageView = UIImageView.init()self.image ...

  8. 动画效果html5,HTML5动画效果

    html5动画效果 这篇文章涉及到的内容有: 2d,3d的转换 过度效果 动画 多列 1.2d,3d转化 2d,3d转化是指对元素的外观进行一些操作,例如: 移动元素 旋转 缩放 倾斜 3d转换 接下 ...

  9. java前端接口怎么写_前端接口怎么写

    1.java后台怎么写接口给前端使用 java后台如何给前端写使用接口,框架一开始就得考虑好的,很多都使用mvc架构往往用户登录时,用户密码符合,会允许其访问,保存登录信息,下次就不需要再次登录了,直 ...

最新文章

  1. mysql 查询日志介绍
  2. CanvasRenderingContext2D(渲染上下文对象)
  3. Linux中常用的操作指令(随时更新)
  4. ubuntu入门知识
  5. Unix基本系统数据类型和stat结构体
  6. 速看!上班后如何做好防护?这9点一定要知道
  7. FeatureLayer.FeatureClass.Feature --以及图层最容易理解的讲解;如有巧合,一定是别人抄袭(Arcgis辅助理解)
  8. 多层LSTM的坑:如何定义多层LSTM?
  9. 多年 iOS 开发经验总结
  10. linux下解压rar文件
  11. SPRING IN ACTION 第4版笔记-第十章Hitting the database with spring and jdbc-002-本章的源代码...
  12. Vue3.0.0-beta.1 今天它来了!!!
  13. 有趣又实用的软件,给生活增添趣味
  14. php gps 车辆定位,员工GPS解决方案
  15. 【算法】旅行商A*算法
  16. 检测器评价指标-IOU
  17. CAD制图初学入门教程:CAD图纸目录的使用
  18. ssm框架可以不用ajax,SSM框架关于后台返回JSON数据中显示很多不需要的字段为NULL...
  19. 物联网终端设备软件可靠性分析
  20. codevs1384黑色星期五【USACO】

热门文章

  1. 60-008-024-使用-命令-flink如何动态支持依赖jar包提交
  2. scala学习-scala通过mkString方法把一个集合转化为一个字符串
  3. 中招了,重写TreeMap的比较器引发的问题...
  4. 基于 SpringMvc + OpenCV 实现的答题卡识别系统(附源码)
  5. 使用ZooKeeper实现分布式队列、分布式锁和选举详解
  6. 参考 JavaEE注解学习:(二)
  7. Delphi--过程和函数
  8. Java中try catch的原则
  9. MapUtils常用方法
  10. [jQuery] 通过ajax保存到服务器,成功显示信息.