关于CSS3动画性能
前天我去面试了...好吧,对于自己6年6份工作的悲催经历,我自己也是醉了。
但没办法,我这种当时上学没好好学习,临毕业才出家写代码的半吊子码农,起步没起好,以至于一直没能找到真正让自己满意的工作。
通过了几年的努力和累积,总算是把信心给拿回来了。
这不,又踏上我的追求之路了。我真心是希望这是我最后一次换工作了。
阿门,愿主保佑我...
那个...好像废话说得有点多了。OK,正题时间。
是这样,面试的时候,技术官问了我一个问题,引发了我的深思~那就是CSS动画的效率问题。
这个...因为之前接触移动项目只有约1年的时间,当时对移动前端开发性能研究还没触及这一块...
唉,没办法,初次接触移动项目,问题难免多多,而且当时连动画都用得不多,何况是动画性能的研究...
所以,作为一个老实人,我如实回答了...(当然后面还有一些问题我也失水准了,以至于这一次面试我感觉十有八九是要挂了...)
面试挂了就挂了,咱解决问题的心不能凉啊~(周围众人抛来不满的表情:你小样又在说废话了...- -b)
于是各种资料查找,找到了两篇相关的文章:
http://www.w3cfuns.com/article-5598175-1-1.html
http://www.cnblogs.com/PeunZhang/p/3510083.html
目前对提升移动端CSS3动画体验的主要方法有几点:
1.在桌面端和移动端用CSS开启硬件加速
我们可以在浏览器中用css开启硬件加速,使GPU (Graphics Processing Unit) 发挥功能,从而提升性能。
当浏览器检测到页面中某个DOM元素应用了某些CSS规则时就会开启,最显著的特征的元素的3D变换。
.cube {
-webkit-transform: translate3d(250px,250px,250px) rotate3d(250px,250px,250px,-120deg) scale3d(0.5, 0.5, 0.5);
}
如果我们不需要对元素进行3D变换,又想启动硬件加速,可以用下面的小技巧来诱使浏览器启动硬件加速。
.cube {
-webkit-transform: translateZ(0);
-moz-transform: translateZ(0);
-ms-transform: translateZ(0);
-o-transform: translateZ(0);
transform: translateZ(0);
/* Other transform properties here */
}
使用transform: translateZ(0),不会对元素进行3D变换,但一样可以触发硬件加速。
同理,也可以使用下面的做法:
.cube {
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
/* Other transform properties here */
}
在 Chrome and Safari中,当我们使用CSS transforms 或者 animations时可能会有页面闪烁的效果,下面的代码可以修复此情况:
.cube {
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
-ms-backface-visibility: hidden;
backface-visibility: hidden;
-webkit-perspective:;
-moz-perspective:;
-ms-perspective:;
perspective:;
/* Other transform properties here */
}
通过使用translate3d制作的位移动画流畅度会明显优于使用left,right,top,bottom等属性。
但这种做法同时也增加了内存的使用,而且它会加快移动端设备的电池消耗。
2.尽可能少的使用box-shadows与gradients
box-shadows(阴影)与gradients(渐变)往往都是页面的性能杀手,尤其是在一个元素同时都使用了它们,所以拥抱扁平化设计吧。
3.尽可能的让动画元素不在文档流中,以减少重排
方法很简单,直接在动画元素上使用
position: fixed;
或者
position: absolute;
关于CSS3动画性能的更多相关文章
- myslide 插件开发知识点总结和 css3 动画性能问题的研究
myslide 插件开发知识点总结和 css3 动画性能问题的研究 这篇文章主要是总结最近开发过程中遇到的问题.有几个问题又是不容易发现原因的问题,但是最后的结果又是很简单的. 1.手机端的 slid ...
- css3动画性能优化--针对移动端卡顿问题
一.使用css,jquery,canvas制作动画 1.Canvas 优点:性能好,强大,支持多数浏览器(除了IE6.IE7.IE8),画出来的图形可以直接保存为 .png 或者 .jpg的图形: 缺 ...
- WEB 移动端 CSS3动画性能 优化
很多时候,我们在开发移动端的时候要使自己的网页兼容不同的机型,很多时候会采用CSS3动画,但是很多时候在安卓机下,动画明显会出现卡顿,很难看,那么这里我介绍几个CSS 属性进行硬件加速那么就会得到明显 ...
- css3动画性能优化
css3的动画简单好用,但是性能方面存在一些问题,很多时候一不留神cpu就已经满了. 现在记下一些常用的技巧,去优化我们的css3的动画. 1. translate3d进行gpu加速 写动画的时候写个 ...
- 被解放的GPU CSS3动画加速
概念 图形处理器( Graphics Processing Unit ) 专门用来处理在个人电脑.工作站或游戏机上图像运算工作 显卡的“心脏” 90%以上的新型台式电脑和笔记本型电脑拥有集成图形处理器 ...
- css3动画与js动画的一些理解
http://zencode.in/19.CSS-vs-JS%E5%8A%A8%E7%94%BB%EF%BC%9A%E8%B0%81%E6%9B%B4%E5%BF%AB%EF%BC%9F.html 首 ...
- CSS3动画和JS动画的比较
前言 之前有被问到一个问题,css3动画和js动画性能谁更好,为什么.据我的经验,当然觉得css3动画性能更好,至于为什么一时还真答不上来,所以特意查了一下资料总结一波. JS动画 优点: js动画控 ...
- CSS3动画(性能篇)
写在前面 高性能移动Web相较PC的场景需要考虑的因素也相对更多更复杂,我们总结为以下几点: 流量.功耗与流畅度. 在PC时代我们更多的是考虑体验上的流畅度,而在Mobile端本身丰富的场景下,需要额 ...
- 关于JS动画和CSS3动画的性能差异
本文章为综合其它资料所得. 根据Google Developer,Chromium项目里,渲染线程分为main thread和compositor thread. 如果CSS动画只是改变transfo ...
随机推荐
- http-bio-8080"-exec-6
现象如下: Tomcat7启动后,后台抛出如下异常,前台一直无法登陆 Exception in thread ""http-bio-8080"-exec-6&qu ...
- opencv——通过面积筛选最大轮廓,并求凸包矩形的长和宽
#include "stdafx.h" #include <iostream> #include<string> #include <stdio.h& ...
- Linq生成操作之DefautIfEmpty,Empty,Range,Repeat源码分析
Linq生成操作之DefautIfEmpty,Empty,Range,Repeat源码分析 Linq的四种生成运算 DefautIfEmpty,Empty,Range,Repeat 也就是给我们初始化 ...
- 谷歌三大核心技术(一)Google File System中文版
http://www.open-open.com/lib/view/open1328763454608.html
- docker中安装Jenkins
1.获取Jenkins镜像(不要直接docker pull jenkin,这样获取的不是最新的版本,后续安装部分插件会不成功) docker pull jenkins/jenkins 创建文件夹 su ...
- Dev 之 GridControl 列表 显示底部(包括底部统计)
1.列表 Gridview 显示底部 2 底部增加统计
- Redis 工具类
项目里的Redis 工具类,写下来以备后用 public class RedisConnector { public class RedisParseResult<T> { public ...
- css3动画简单应用
CSS3添加了几个动画效果的属性,通过设置这些属性,可以做出一些简单的动画效果而不需要再去借助JavaScript.CSS3动画的属性主要分为三类:transform.transition以及anim ...
- 比特币解锁脚本中的ScriptSignature都包含了什么东西
比特币 解锁脚本signature script 包含了那些东西? 使用 UTXO 需要私钥签名,私钥到底都签了什么东西呢?一直比较好奇. 比特币的私钥签名总共有五中类型,具体见 btcd 代码,如下 ...
- 发布 Android Library 到 JCenter 从入门到放弃
最近想倒腾一个小小的 UIKit 到 JCenter,为开源社区贡献一点绵薄之力,于是就有了一系列惨无人道的踩坑史.好,接下来,直奔主题,以下是发布流程. 发布到 JCenter 发布到 JCente ...