diff options
author | Scott González <scott.gonzalez@gmail.com> | 2011-11-02 11:09:00 -0400 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2011-11-02 11:09:00 -0400 |
commit | 3de7d8b68ca310f492fc460418f87e3faa590418 (patch) | |
tree | 86b8aaeb30a842fb427d0e1c5fc0e7efe895c8fa /ui/jquery.ui.position.js | |
parent | f76873c2d266f6d46b920877bc2c13dc758f1ff7 (diff) | |
download | jquery-ui-3de7d8b68ca310f492fc460418f87e3faa590418.tar.gz jquery-ui-3de7d8b68ca310f492fc460418f87e3faa590418.zip |
Position: Check for fraction support.
Diffstat (limited to 'ui/jquery.ui.position.js')
-rw-r--r-- | ui/jquery.ui.position.js | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/ui/jquery.ui.position.js b/ui/jquery.ui.position.js index 74530b948..9a520f845 100644 --- a/ui/jquery.ui.position.js +++ b/ui/jquery.ui.position.js @@ -183,6 +183,12 @@ $.fn.position = function( options ) { position.left += myOffset[ 0 ]; position.top += myOffset[ 1 ]; + // if the browser doesn't support fractions, then round for consistent results + if ( !$.support.offsetFractions ) { + position.left = Math.round( position.left ); + position.top = Math.round( position.top ); + } + collisionPosition = { marginLeft: marginLeft, marginTop: marginTop @@ -406,6 +412,45 @@ $.ui.position = { } }; +// fraction support test +(function () { + var testElement, testElementParent, testElementStyle, offsetLeft, i + body = document.getElementsByTagName( "body" )[ 0 ], + div = document.createElement( "div" ); + + //Create a "fake body" for testing based on method used in jQuery.support + testElement = document.createElement( body ? "div" : "body" ); + testElementStyle = { + visibility: "hidden", + width: 0, + height: 0, + border: 0, + margin: 0, + background: "none" + }; + if ( body ) { + jQuery.extend( testElementStyle, { + position: "absolute", + left: "-1000px", + top: "-1000px" + }); + } + for ( i in testElementStyle ) { + testElement.style[ i ] = testElementStyle[ i ]; + } + testElement.appendChild( div ); + testElementParent = body || document.documentElement; + testElementParent.insertBefore( testElement, testElementParent.firstChild ); + + div.style.cssText = "position: absolute; left: 10.7432222px;"; + + offsetLeft = $( div ).offset().left; + $.support.offsetFractions = offsetLeft > 10 && offsetLeft < 11; + + testElement.innerHTML = ""; + testElementParent.removeChild( testElement ); +})(); + // DEPRECATED if ( $.uiBackCompat !== false ) { // offset option |