requestAnimationFrame for smart animating
浏览器上的动画,通常都是用定时器完成,每隔一段时间改变一下元素属性。
但是定时器太古板,不管是否当前标签,都会吃掉部分cpu资源。
所幸现代浏览器对开发者友好,将这些脏活抗了去,还做了优化。
现在,我们要做的只是调用API,就能减少动画过程中的repaint、reflow,减少cpu占用。
// shim layer with setTimeout fallback
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function(/* function */ callback, /* DOMElement */ element){
window.setTimeout(callback, 1000 / 60);
};
})();
// usage:
// instead of setInterval(render, 16) ....
(function animloop(){
render();
requestAnimFrame(animloop, element);
})();
参考:requestAnimationFrame for smart animating

浙公网安备 33010602011771号