aboutsummaryrefslogtreecommitdiffstats
path: root/ui/jquery.ui.position.js
diff options
context:
space:
mode:
authorScott González <scott.gonzalez@gmail.com>2011-11-02 11:09:00 -0400
committerScott González <scott.gonzalez@gmail.com>2011-11-02 11:09:00 -0400
commit3de7d8b68ca310f492fc460418f87e3faa590418 (patch)
tree86b8aaeb30a842fb427d0e1c5fc0e7efe895c8fa /ui/jquery.ui.position.js
parentf76873c2d266f6d46b920877bc2c13dc758f1ff7 (diff)
downloadjquery-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.js45
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