mirror of
https://github.com/jquery/jquery.git
synced 2026-01-24 15:58:19 -05:00
Fix #12447: Ensure starting-point calc takes finite time. Close gh-922.
This commit is contained in:
committed by
Dave Methvin
parent
560c178c82
commit
e755c19416
15
src/effects.js
vendored
15
src/effects.js
vendored
@@ -5,12 +5,13 @@ var fxNow, timerId,
|
||||
animationPrefilters = [ defaultPrefilter ],
|
||||
tweeners = {
|
||||
"*": [function( prop, value ) {
|
||||
var end, unit, prevScale,
|
||||
var end, unit,
|
||||
tween = this.createTween( prop, value ),
|
||||
parts = rfxnum.exec( value ),
|
||||
target = tween.cur(),
|
||||
start = +target || 0,
|
||||
scale = 1;
|
||||
scale = 1,
|
||||
maxIterations = 20;
|
||||
|
||||
if ( parts ) {
|
||||
end = +parts[2];
|
||||
@@ -26,17 +27,15 @@ var fxNow, timerId,
|
||||
do {
|
||||
// If previous iteration zeroed out, double until we get *something*
|
||||
// Use a string for doubling factor so we don't accidentally see scale as unchanged below
|
||||
prevScale = scale = scale || ".5";
|
||||
scale = scale || ".5";
|
||||
|
||||
// Adjust and apply
|
||||
start = start / scale;
|
||||
jQuery.style( tween.elem, prop, start + unit );
|
||||
|
||||
// Update scale, tolerating zeroes from tween.cur()
|
||||
scale = tween.cur() / target;
|
||||
|
||||
// Stop looping if we've hit the mark or scale is unchanged
|
||||
} while ( scale !== 1 && scale !== prevScale );
|
||||
// Update scale, tolerating zero or NaN from tween.cur()
|
||||
// And breaking the loop if scale is unchanged or perfect, or if we've just had enough
|
||||
} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
|
||||
}
|
||||
|
||||
tween.unit = unit;
|
||||
|
||||
Reference in New Issue
Block a user