--- title: Window.requestAnimationFrame() slug: Web/API/Window/requestAnimationFrame translation_of: Web/API/window/requestAnimationFrame ---
window.requestAnimationFrame
informa al navegador que quieres realizar una animación y solicita que el navegador programe el repintado de la ventana para el próximo ciclo de animación. El método acepta como argumento una función a la que llamar antes de efectuar el repintado.requestAnimationFrame()
desde tu callback.Debes llamar a este método cuando estés preparado para actualizar tu animación en la pantalla para pedir que se programe el repintado. Ésto puede suceder hasta 60 veces por segundo en pestañas en primer plano, pero se puede ver reducido a velocidades inferiores en pestañas en segundo plano.
El método indicado como callback recibe un único argumento que indica el tiempo en el que está programado que se ejecute el ciclo de animación.
requestID = window.mozRequestAnimationFrame(callback); // Firefox
window.msRequestAnimationFrame(callback
); // IE 10 PP2+
window.webkitRequestAnimationFrame(callback[, element]); // Chrome/Webkit
callback
Un valor entero long
, es un entero de tipo long que identifica de manera exclusiva la entrada en la lista de callbacks. Es siempre un distinto de cero, pero no debes realizar ninguna otra suposición acerca de su valor. Puedes pasar este valor a {{ domxref("window.cancelAnimationFrame()") }} para cancelar la petición de actualización del callback.
(function() {
var requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame ||
window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;
window.requestAnimationFrame = requestAnimationFrame;
})();
var start = null;
var element = document.getElementById('SomeElementYouWantToAnimate');
function step(timestamp) {
if (!start) start = timestamp;
var progress = timestamp - start;
element.style.transform = 'translateX(' + Math.min(progress / 10, 200) + 'px)';
if (progress < 2000) {
window.requestAnimationFrame(step);
}
}
window.requestAnimationFrame(step);
{{ CompatibilityTable() }}
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | 21.0 {{ property_prefix("webkit") }} | 14.0 {{ property_prefix("moz") }} | 10.0 | {{ CompatNo() }} | 6.0 {{ property_prefix("webkit") }} |
requestID return value |
{{ CompatUnknown() }} | {{ CompatGeckoDesktop("11.0") }} {{ property_prefix("moz") }} | {{ CompatUnknown() }} | {{ CompatUnknown() }} | {{ CompatUnknown() }} |
Feature | Android | BlackBerry Browser | Chrome for Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | {{ CompatNo() }} | 10.0 {{ property_prefix("webkit") }} |
0.16 {{ property_prefix("webkit") }} |
{{ CompatUnknown() }} | {{ CompatUnknown() }} | {{ CompatNo() }} | 6.0 {{ property_prefix("webkit") }} |
requestID return value |
{{ CompatUnknown() }} | {{ CompatUnknown() }} | {{ CompatGeckoMobile("11.0") }} {{ property_prefix("moz") }} | {{ CompatUnknown() }} | {{ CompatUnknown() }} | {{ CompatUnknown() }} |
Antes que Gecko 11.0 {{ geckoRelease("11.0") }}, mozRequestAnimationFrame()
se podía llamar sin parámetros. Esta opción ya no está soportada ya que no es probable que se convierta en parte del estándar.
En estos momentos, la llamada correcta en Chrome para cancelar la petición es window.webkitCancelAnimationFrame()
. La antigua versión, window.webkitCancelRequestAnimationFrame()
, está obsoleta se sigue soportando por ahora.
{{ spec("http://www.w3.org/TR/animation-timing/#requestAnimationFrame", "Timing control for script-based animations: requestAnimationFrame", "WD") }}