requestAnimationFrame的用法

今天是第一次接触requestAnimationFrame,该函数是针对动画效果的API,谷歌浏览器,火狐浏览器,IE10+都实现了这个函数。

requestAnimationFrame有什么用?

requestAnimationFrame兼容IE8、IE9的写法

` (function() { var lastTime = 0; var vendors = [‘webkit’, ‘moz’]; for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { window.requestAnimationFrame = window[vendors[x] + ‘RequestAnimationFrame’]; window.cancelAnimationFrame = window[vendors[x] + ‘CancelAnimationFrame’] || // Webkit中此取消方法的名字变了 window[vendors[x] + ‘CancelRequestAnimationFrame’]; }

if (!window.requestAnimationFrame) {
    window.requestAnimationFrame = function(callback, element) {
        var currTime = new Date().getTime();
        var timeToCall = Math.max(0, 16.7 - (currTime - lastTime));
        var id = window.setTimeout(function() {
            callback(currTime + timeToCall);
        }, timeToCall);
        lastTime = currTime + timeToCall;
        return id;
    };
}
if (!window.cancelAnimationFrame) {
    window.cancelAnimationFrame = function(id) {
        clearTimeout(id);
    };
} }()); `

参考

CSS3动画那么强,requestAnimationFrame还有毛线用?-张鑫旭 HTML5探秘:用requestAnimationFrame优化Web动画