]> source.dussan.org Git - jquery.git/commitdiff
CSS: Correctly set support properties with non-default zoom
authorSaptak Sengupta <saptak013@gmail.com>
Wed, 6 Dec 2017 04:59:54 +0000 (10:29 +0530)
committerRichard Gibson <richard.gibson@gmail.com>
Wed, 6 Dec 2017 04:59:54 +0000 (23:59 -0500)
Fixes gh-3808
Closes gh-3872

src/css/support.js
test/data/css/cssWidthBrowserZoom.html [new file with mode: 0644]
test/unit/css.js

index 5404f8cd8819d5d3e1952693d39efbf445085f8f..dbb7ef7ce173e3fe17419229b59c386930655a5b 100644 (file)
@@ -30,16 +30,16 @@ define( [
                pixelPositionVal = divStyle.top !== "1%";
 
                // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
-               reliableMarginLeftVal = divStyle.marginLeft === "12px";
+               reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
 
                // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
                // Some styles come back with percentage values, even though they shouldn't
                div.style.right = "60%";
-               pixelBoxStylesVal = divStyle.right === "36px";
+               pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
 
                // Support: IE 9 - 11 only
                // Detect misreporting of content dimensions for box-sizing:border-box elements
-               boxSizingReliableVal = divStyle.width === "36px";
+               boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
 
                // Support: IE 9 only
                // Detect overflow:scroll screwiness (gh-3699)
@@ -53,6 +53,10 @@ define( [
                div = null;
        }
 
+       function roundPixelMeasures( measure ) {
+               return Math.round( parseFloat( measure ) );
+       }
+
        var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
                reliableMarginLeftVal,
                container = document.createElement( "div" ),
diff --git a/test/data/css/cssWidthBrowserZoom.html b/test/data/css/cssWidthBrowserZoom.html
new file mode 100644 (file)
index 0000000..99f87ea
--- /dev/null
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html>
+<head>
+       <meta charset="utf-8">
+       <style>
+               html {
+                       zoom: 1.1;
+               }
+               #test {
+                       width: 100px;
+                       height: 100px;
+                       padding: 10px;
+                       border: 1px solid pink;
+                       box-sizing: border-box;
+               }
+       </style>
+</head>
+<body>
+<div id="test"></div>
+<script src="../../jquery.js"></script>
+<script src="../iframeTest.js"></script>
+<script>
+       startIframeTest( jQuery( "#test" ).css( 'width' ) );
+</script>
+</body>
+</html>
index 285ad2ef0e0307a111819eb154b2f6b0d8db84d0..2ca72c1aad3102fbb056aa63726b8f312d6e3b22 100644 (file)
@@ -1164,6 +1164,15 @@ testIframe(
        }
 );
 
+testIframe(
+       "css('width') should work correctly with browser zooming",
+       "css/cssWidthBrowserZoom.html",
+       function( assert, jQuery, window, document, cssWidthBrowserZoom ) {
+               assert.expect( 1 );
+               assert.strictEqual( cssWidthBrowserZoom, "100px", "elem.css('width') works correctly with browser zoom" );
+       }
+);
+
 ( function() {
        var supportsFractionalGBCR,
                qunitFixture = document.getElementById( "qunit-fixture" ),