Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
CSS: Correctly detect scrollbox support with non-default zoom
Fixes gh-4029
Closes gh-4030
  • Loading branch information
gibson042 committed May 7, 2018
1 parent f8c1e90 commit 821bf34
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 12 deletions.
16 changes: 9 additions & 7 deletions src/css.js
Expand Up @@ -352,13 +352,15 @@ jQuery.each( [ "height", "width" ], function( i, dimension ) {
boxSizingNeeded = scrollBoxSize || extra,
isBorderBox = boxSizingNeeded &&
jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
subtract = extra && boxModelAdjustment(
elem,
dimension,
extra,
isBorderBox,
styles
);
subtract = extra ?
boxModelAdjustment(
elem,
dimension,
extra,
isBorderBox,
styles
) :
0;

// Account for unreliable border-box dimensions by comparing offset* to computed and
// faking a content-box to get border and padding (gh-3699)
Expand Down
4 changes: 3 additions & 1 deletion src/css/support.js
Expand Up @@ -43,8 +43,10 @@ define( [

// Support: IE 9 only
// Detect overflow:scroll screwiness (gh-3699)
// Support: Chrome <=64
// Don't get tricked when zoom affects offsetWidth (gh-4029)
div.style.position = "absolute";
scrollboxSizeVal = div.offsetWidth === 36 || "absolute";
scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12 || "absolute";

documentElement.removeChild( container );

Expand Down
6 changes: 5 additions & 1 deletion test/data/css/cssWidthBrowserZoom.html
Expand Up @@ -7,6 +7,7 @@
zoom: 1.1;
}
#test {
position: absolute;
width: 100px;
height: 100px;
padding: 10px;
Expand All @@ -20,7 +21,10 @@
<script src="../../jquery.js"></script>
<script src="../iframeTest.js"></script>
<script>
startIframeTest( jQuery( "#test" ).css( 'width' ) );
startIframeTest(
jQuery( "#test" ).css( 'width' ),
jQuery( "#test" ).css( 'width', '100px' ).css( 'width' )
);
</script>
</body>
</html>
7 changes: 4 additions & 3 deletions test/unit/css.js
Expand Up @@ -1167,9 +1167,10 @@ 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( assert, jQuery, window, document, widthBeforeSet, widthAfterSet ) {
assert.expect( 2 );
assert.strictEqual( widthBeforeSet, "100px", "elem.css('width') works correctly with browser zoom" );
assert.strictEqual( widthAfterSet, "100px", "elem.css('width', val) works correctly with browser zoom" );
}
);

Expand Down

0 comments on commit 821bf34

Please sign in to comment.