In der jQuery-Quelle für Version 1.6.2 wird requestAnimationFrame
sie verwendet, wenn sie vorhanden ist. Ich habe den Code nicht im Detail untersucht, um festzustellen, dass er für alles verwendet wird, wofür er verwendet werden kann, aber er wird im Animationsabschnitt des Codes anstelle eines Aufrufs von verwendet setInterval()
. Hier ist der Code aus 1.6.2:
custom: function( from, to, unit ) {
var self = this,
fx = jQuery.fx,
raf;
this.startTime = fxNow || createFxNow();
this.start = from;
this.end = to;
this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
this.now = this.start;
this.pos = this.state = 0;
function t( gotoEnd ) {
return self.step(gotoEnd);
}
t.elem = this.elem;
if ( t() && jQuery.timers.push(t) && !timerId ) {
if ( requestAnimationFrame ) {
timerId = true;
raf = function() {
if ( timerId ) {
requestAnimationFrame( raf );
fx.tick();
}
};
requestAnimationFrame( raf );
} else {
timerId = setInterval( fx.tick, fx.interval );
}
}
},
Ich verwende 1.6.4 noch nicht, daher weiß ich nichts über diese Version. Wenn es nicht in dieser Version ist, muss es einige Probleme gegeben haben, so dass es entfernt wurde.
BEARBEITEN:
Wenn Sie diesen Blog-Beitrag lesen , hört es sich so an, als wäre er aus 1.6.3 herausgezogen worden und wird möglicherweise wieder in 1.7 aufgenommen. Der Hauptgrund dafür ist, dass einige Dinge kaputt gegangen sind, die die Animationswarteschlange für (falsch) verwendet hat ( obwohl das vielleicht Ansichtssache ist).
requestAnimationFrame
, habe ich in 1.8 Hooks hinzugefügt, mit denen Sie diesetInterval
Schleife überschreiben können, um einrequestAnimationFrame
Plugin