Описание тега requestanimationframe
HTML5 window.requestAnimationFrame API is an alternative to setTimeout for animations or applications running in a loop.
The HTML5 window.requestAnimationFrame(callback) function sends a request to the browser that the callback() function is to be called before the next repaint of the window.
When the callback() function is invoked, it is passed a DOMHighResTimeStamp parameter, indicating the time in milliseconds at which the callback function was called.
To continue an animation, call the requestAnimationFrame() function from within itself:
function nextFrame(timeStamp) {
// animation
requestAnimationFrame(nextFrame); // repeats the animation
}
requestAnimationFrame(nextFrame); // starts the animation
The browser handles the repaint.