aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>2023-04-04 16:00:55 +0200
committerGitHub <noreply@github.com>2023-04-04 16:00:55 +0200
commitbce13b72c1753e16cc0db53ebf0f0456bdcf6b48 (patch)
tree6465829ebdbd209547355057980f56beb8e0779d /src
parentbcaeb000b777c018ad5d18e01be5060caa8cb158 (diff)
downloadjquery-bce13b72c1753e16cc0db53ebf0f0456bdcf6b48.tar.gz
jquery-bce13b72c1753e16cc0db53ebf0f0456bdcf6b48.zip
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
Diffstat (limited to 'src')
-rw-r--r--src/css.js9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/css.js b/src/css.js
index 29dca0e42..a69ad1730 100644
--- a/src/css.js
+++ b/src/css.js
@@ -46,7 +46,8 @@ function setPositiveNumber( _elem, value, subtract ) {
function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
var i = dimension === "width" ? 1 : 0,
extra = 0,
- delta = 0;
+ delta = 0,
+ marginDelta = 0;
// Adjustment may not be necessary
if ( box === ( isBorderBox ? "border" : "content" ) ) {
@@ -56,8 +57,10 @@ function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computed
for ( ; i < 4; i += 2 ) {
// Both box models exclude margin
+ // Count margin delta separately to only add it after scroll gutter adjustment.
+ // This is needed to make negative margins work with `outerHeight( true )` (gh-3982).
if ( box === "margin" ) {
- delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
+ marginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
}
// If we get here with a content-box, we're seeking "padding" or "border" or "margin"
@@ -108,7 +111,7 @@ function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computed
) ) || 0;
}
- return delta;
+ return delta + marginDelta;
}
function getWidthOrHeight( elem, dimension, extra ) {