Show More
Commit Description:
add model solution
Commit Description:
add model solution
References:
File last commit:
Show/Diff file:
Action:
node_modules/jquery/src/css/adjustCSS.js
| 74 lines
| 2.0 KiB
| application/javascript
| JavascriptLexer
|
r789 | define( [ | |||
"../core", | ||||
"../var/rcssNum" | ||||
], function( jQuery, rcssNum ) { | ||||
"use strict"; | ||||
function adjustCSS( elem, prop, valueParts, tween ) { | ||||
var adjusted, scale, | ||||
maxIterations = 20, | ||||
currentValue = tween ? | ||||
function() { | ||||
return tween.cur(); | ||||
} : | ||||
function() { | ||||
return jQuery.css( elem, prop, "" ); | ||||
}, | ||||
initial = currentValue(), | ||||
unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), | ||||
// Starting value computation is required for potential unit mismatches | ||||
initialInUnit = elem.nodeType && | ||||
( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && | ||||
rcssNum.exec( jQuery.css( elem, prop ) ); | ||||
if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { | ||||
// Support: Firefox <=54 | ||||
// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) | ||||
initial = initial / 2; | ||||
// Trust units reported by jQuery.css | ||||
unit = unit || initialInUnit[ 3 ]; | ||||
// Iteratively approximate from a nonzero starting point | ||||
initialInUnit = +initial || 1; | ||||
while ( maxIterations-- ) { | ||||
// Evaluate and update our best guess (doubling guesses that zero out). | ||||
// Finish if the scale equals or crosses 1 (making the old*new product non-positive). | ||||
jQuery.style( elem, prop, initialInUnit + unit ); | ||||
if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { | ||||
maxIterations = 0; | ||||
} | ||||
initialInUnit = initialInUnit / scale; | ||||
} | ||||
initialInUnit = initialInUnit * 2; | ||||
jQuery.style( elem, prop, initialInUnit + unit ); | ||||
// Make sure we update the tween properties later on | ||||
valueParts = valueParts || []; | ||||
} | ||||
if ( valueParts ) { | ||||
initialInUnit = +initialInUnit || +initial || 0; | ||||
// Apply relative offset (+=/-=) if specified | ||||
adjusted = valueParts[ 1 ] ? | ||||
initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : | ||||
+valueParts[ 2 ]; | ||||
if ( tween ) { | ||||
tween.unit = unit; | ||||
tween.start = initialInUnit; | ||||
tween.end = adjusted; | ||||
} | ||||
} | ||||
return adjusted; | ||||
} | ||||
return adjustCSS; | ||||
} ); | ||||