Please note, this is a STATIC archive of website developer.mozilla.org from 03 Nov 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Window.requestAnimationFrame()

La méthode window.requestAnimationFrame() notifie le navigateur que vous souhaitez exécuter une animation et demande que celui-ci exécute une fonction spécifique de mise à jour de l'animation, avant le prochain rafraîchissement du navigateur. Cette méthode prend comme argument un callback qui sera appelé avant le rafraîchissement du navigateur.

Note: Si vous souhaitez animer une nouvelle frame durant le prochain repaint, votre callback doit appeler la méthode requestAnimationFrame().

Vous devez appeler cette méthode dès que vous êtes prêt à rafraîchir votre animation. La fonction contenant l'animation doit être appelée avant que le navigateur n'effectue un nouveau rafraîchissement . En moyenne, le callback sera appelé 60 fois par seconde, cela dépendra de la fréquence de rafraîchissement de votre écran, conformément aux recommandations de la W3C. Cette fréquence peut être inférieure si plusieurs onglets sont ouverts simultanément.

Le callback possède un seul argument, un DOMHighResTimeStamp, qui est le temps, en millisecondes avec une précision minimum de 10 µs, durant lequel l'exécution du rafraîchissement est prévu.

Syntaxe

requestID = window.requestAnimationFrame(callback);       // Firefox 23 / IE 10 / Chrome / Safari 7 (incl. iOS)
requestID = window.mozRequestAnimationFrame(callback);    // Firefox < 23
requestID = window.webkitRequestAnimationFrame(callback); // Anciennes versions de Safari / Chrome

Paramètres

callback
Un paramètre définissant la fonction à appeler lorsque votre animation va être rafraîchie lors du prochain rafraîchissement. Le callback ne prend qu'un seul argument, un DOMHighResTimeStamp, qui est le temps à partir duquel requestAnimationFrame va commencer à appeler les callbacks.

Valeur retournée

requestID est un entier long unique identifiant l'élément dans la liste des callbacks. C'est une valeur différente de zéro, mais il est prudent de ne pas faire de suppositions sur cette valeur. En passant cette valeur en paramètre de la méthode window.cancelAnimationFrame(),  vous annulez l'appel du callback.

Exemple

window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame ||
                              window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;


var start = null;

var d = document.getElementById("SomeElementYouWantToAnimate");

function step(timestamp) {
  var progress;
  if (start === null) start = timestamp;
  progress = timestamp - start;
  d.style.left = Math.min(progress/10, 200) + "px";
  if (progress < 2000) {
    requestAnimationFrame(step);
  }
}

requestAnimationFrame(step);

Compatibilités

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 10.0 webkit
24.0
4.0 moz [1]
23 [2]
10.0 (Oui) -o
15.0
6.0 webkit
6.1
requestID return value 23.0 webkit
24.0
11.0 (11.0) moz 10.0 (Oui) -o
15.0
(Oui)
Feature Android BlackBerry Browser Chrome pour Android Firefox Mobile (Gecko) IE Phone Opera Mobile Safari Mobile
Basic support Pas de support 10.0 webkit 16.0 webkit ? ? 14.0 7.0
6.0 webkit
requestID return value ?   ? 11.0 (11.0) moz ? ? ?

Notes pour Gecko

[1] Avant Gecko 11.0 (Firefox 11.0 / Thunderbird 11.0 / SeaMonkey 2.8), mozRequestAnimationFrame() pouvait être appelée sans paramètres d'entrée. Cela n'est plus supporté et n'est pas susceptible d'être standardisé.

[2] Le callback prend comme paramètre un DOMTimeStamp au lieu d'un DOMHighResTimeStamp si c'est la version préfixée qui est utilisée. DOMTimeStamp n'a qu'une précision de l'ordre de la milliseconde, mais DOMHightResTimeStamp a une précision minimale de l'ordre de 10 microsecondes.

Notes pour Chrome

La syntaxe correcte, dans Chrome, pour annuler l'exécution est window.cancelAnimationFrame(). Dans les anciennes versions, window.webkitCancelAnimationFrame() & window.webkitCancelRequestAnimationFrame() sont obsolètes mais sont toujours supportées pour le moment.

Specification

Timing control for script-based animations: requestAnimationFrameWD

Voir aussi

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : Hell_Carlito, Gibus, kiux, xUMi, Durindo, Huntedpix, fscholz, youssefj, wakooka, juleschz
 Dernière mise à jour par : Hell_Carlito,