动画 优化

在页面做动画效果主要方式

1  CSS 2D/3D transforms and translate()      (做动画的三个属性:transition,animation/keyframe)

2  position:absolute and top/left

使用top/left来做动画的时候,所有CSS样式都会在CPU上计算,每一帧都需要重新合成CSS上的样式,而是用translate的方式,会把动画元素放到它自己在GPU上的渲染层,然后任何2D,3D,透明度的变化都只是在GPU上完成

相关建议

1、使用keyfranme 或者 transitions 来做动画,因为浏览器内部会优化

2、如果一定要用js来做动画,那么使用requestAnimationFrame  避免使用setTimeout setInterval

3、避免通过改变没一帧style的样式来做动画(jquery的animate()就是这种方式),用css来做动画效果浏览器会进行优化

4、通过2D的transforms取代绝对定位会有更好的FPS,因为更小的绘制和更顺滑的动画

5、提示的时候看TimeLine的Frame模式,还可以打开Show Paint Rects和Render Composited Layer Borders选项

transition 动态补间和translate3d是性能最高的:

keyframe来做动画

.element{

-webkit-animation: anime 0.5s ease-in;

}

@-webkit-keyframes anime {

0% {

-webkit-transform: translate(0,0);

opacity: 0.1;

}

50% {

-webkit-transform: translate(100px,0);

opacity: 0.5;

}

100% {

-webkit-transform: translate(0,0);

opacity: 1;

}

}

//捕捉webkitAnimationEnd事件

element.addEventListener(‘webkitAnimationEnd‘, end, false);                 触发动画结束事件

transition来做动画

.element{ -webkit-transition: all 0.25s ease-in; }

.element.on{ -webkit-transform: translate(100px,0); }

//捕捉webkitTransitionEnd事件

element.addEventListener(‘webkitTransitionEnd‘, end, false);

webkitTransitionEnd事件的触发次数比webkitAnimationEnd事件的触发次数多一次,webkitAnimationEnd只是在动画完全结束后执行一次,webkitTransitionEnd事件在用户定义的动画完成后触发一次,最后变回开始状态时又触发一次

时间: 2024-08-03 11:27:24

动画 优化的相关文章

Away3d 骨骼动画优化

很多朋友说Away3D 的骨骼数限制在32根,确切的说应该是Stage3D 的限制.在 AGAL2.0之前 VC寄存器是128个,每个vc常量寄存器最大只能容纳4位,transform占用一个4*4的矩阵,所以如果把一个transform存进vc里面,需要到4个寄存器才能存得完.这样,一根骨骼占用了4个寄存器.而vc总共是有128个.就算全部128个vc都用于计算骨骼,也只能32根骨骼.该怎么办呢? 之前在做 <狂P三国>时的解决办法是把transform减缩成一个四元素储存骨骼的旋转,然后一

简单的转盘抽奖——CSS动画优化

前言 前两天去一家公司面试,被问到一些小游戏的东西.面试官提到了刷红包还有抽奖这些怎么实现,当时简单说了下思路,回来之后想想还是说的太轻描淡写了,干说不做就是耍流氓,所以就做了一个(Demo & 源码).启动方式:手指在转盘上滑动,转盘转动.这里没有像一般的抽奖程序一样在后台指定抽奖结果,结果完全由你的手速决定的(老板哭了...) 界面 界面很简单,网上搜个图片或者直接搜个 demo 就有了,当然自适应也是必须的.这里用了 Rem 来实现自适应,所有尺寸单位均用 rem,改变 html 节点的

UNITY 模型与动画优化选项

1,RIG: Optimze Game Objects,[默认是没勾选的] 效果:将骨骼层级从模型中移除,放到动画控制器中,这样性能提高明显.实测中发现原来瞬间加载5个场景角色有点延迟,采用此选项后流畅了许多. 2,Animator: Update mode 通过此选项可以针对性优化,对于站着不动的NPC,可以使用 [Animate Physics]选项,表示它将使用物理时间更新(fixed time step),通过设置 fixed time step减少不必要的 骨骼蒙皮计算.对于主角,还是

无线页面动画优化实例

无线页面本就分秒必争,更不用说当我们在无线页面中使用动画的时候.不管是css动画还是canvas动画,我们都需要时刻小心着,并且有必要掌握页面性能的基本分析方法. 既然我们的目标是优化,那么就与浏览器的一些渲染和执行机制有关,更好的迎合浏览器的行为方式,才可以让我们的动画流畅而优美. 没错,浏览器是老大,全听它的. 一.设备刷新率(帧率) 我们想让页面变快,想让动画流畅,我们需要先了解一下是什么在影响着我们的感知. 页面运行在设备的浏览器中,现在市面上的移动设备的刷新频率大多是60次/秒(帧率)

web前端入门到实战:CSS 阴影动画优化技巧

box-shaodw 在我们的工作中使用以及越来越多,伴随阴影的动画或多或少都有一点.假设,我们有下面这样一个盒子: div { width: 100px; height: 100px; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); } 希望 hover 的时候,盒阴影从 box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3) 过渡到 box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3). box-sh

动画优化之window.requestAnimationFrame()

requestAnimationFrame解决了浏览器不知道javascript动画什么时候开始.不知道最佳循环间隔时间的问题. 编写动画循环的关键,是要知道延迟时间多长合适.一方面,循环时间必须足够短,这样才能保证动画效果更平滑流畅:另一方面,循环还要足够长,这样才能保证浏览器有能力渲染产生的变化.大多数显示器的刷新频率是60Hz,相当于每秒钟重绘60次.大多数浏览器都会对重绘操作加以限制,不超过显示器的重绘频率,因为即使超过了这个频率,用户体验也不会有提升. 因此最平滑动画的最佳循环间隔是1

动画优化、客户端存储、历史记录、worker

一.requestAnimationFrame 1.requestAnimationFrame怎么用? 设置关键帧动画效果,注重关键帧执行的情况,用法与setTimeout一样 2.requestAnimationFrame与setTimeout的区别?  (执行时间,setTimeout是用户设置的时间 ,requestAnimationFrame看起来实现动画效果更流畅) <style> .demo{ width:100px; height:100px; background:red; p

【腾讯bugly干货分享】Android自绘动画实现与优化实战——以Tencent OS录音机波形动

前言 本文为腾讯bugly的原创内容,非经过本文作者同意禁止转载,原文地址为:http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=1180 我们所熟知的,Android 的图形绘制主要是基于 View 这个类实现. 每个 View 的绘制都需要经过 onMeasure.onLayout.onDraw 三步曲,分别对应到测量大小.布局.绘制. Android 系统为了简化线程开发,降低应用开发的难度,将这三个过程都放在应用的主线程(UI 线程)

HTML页面优化

第一步:加载优化 减少HTTP请求. 因为手机浏览器同时响应请求为4个请求(Android支持4个,iOS 5后可支持6个),所以要尽量减少页面的请求数,首次加载同时请求数不能超过4个.a) 合并CSS.JavaScript:b) 合并小图片,使用雪碧图(CSS SPRITE):   缓存. 使用缓存可以减少向服务器的请求数,节省加载时间,所以所有静态资源都要在服务器端设置缓存,并且尽量使用长Cache(长Cache资源的更新可使用时间戳). a) 缓存一切可缓存的资源:b) 使用长Cache(