From 7bb48a0290a20594ea2a5a7b5772e0410a67164c Mon Sep 17 00:00:00 2001 From: Michał Gołębiowski-Owczarek Date: Tue, 4 Apr 2023 16:00:55 +0200 Subject: CSS: Make `offsetHeight( true )`, etc. include negative margins This regressed in gh-3656 as the added logic to include scroll gutters in `.innerWidth()` / `.innerHeight()` didn't take negative margins into account. This broke handling of negative margins in `.offsetHeight( true )` and `.offsetWidth( true )`. To fix it, calculate margin delta separately and only add it after the scroll gutter adjustment logic. Fixes gh-3982 Closes gh-5234 Ref gh-3656 (cherry picked from commit bce13b72c1753e16cc0db53ebf0f0456bdcf6b48) --- test/unit/dimensions.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'test') diff --git a/test/unit/dimensions.js b/test/unit/dimensions.js index e5ffbb57a..dc7e719fb 100644 --- a/test/unit/dimensions.js +++ b/test/unit/dimensions.js @@ -240,7 +240,7 @@ QUnit.test( "outerWidth()", function( assert ) { } ); QUnit.test( "outerHeight()", function( assert ) { - assert.expect( 12 ); + assert.expect( 14 ); var $div, div, $win = jQuery( window ), @@ -268,6 +268,11 @@ QUnit.test( "outerHeight()", function( assert ) { $div.css( "display", "none" ); assert.equal( $div.outerHeight( true ), 94, "Test hidden div with padding, border and margin with margin option" ); + $div.css( "display", "" ); + $div.css( "margin", "-10px" ); + assert.equal( $div.outerHeight(), 74, "Test with padding, border and negative margin without margin option" ); + assert.equal( $div.outerHeight( true ), 54, "Test with padding, border and negative margin with margin option" ); + // reset styles $div.css( { "position": "", "display": "", "border": "", "padding": "", "width": "", "height": "" } ); -- cgit v1.2.3