Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Dimensions: Add offset prop fallback to FF for unreliable TR dimensions#4808

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes fromall commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 16 additions & 14 deletionssrc/css.js
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -12,6 +12,7 @@ import swap from "./css/var/swap.js";
import curCSS from "./css/curCSS.js";
import adjustCSS from "./css/adjustCSS.js";
import finalPropName from "./css/finalPropName.js";
import support from "./css/support.js";

import "./core/init.js";
import "./core/ready.js";
Expand DownExpand Up@@ -134,23 +135,24 @@ function getWidthOrHeight( elem, dimension, extra ) {
}


if ( ( isIE &&
(

// Support: IE 9 - 11+
// Use offsetWidth/offsetHeight for when box sizing is unreliable.
// In those cases, the computed value can be trusted to be border-box.
isBorderBox ||

// Support: IE 10 - 11+
// IE misreports `getComputedStyle` of table rows with width/height
// set in CSS while `offset*` properties report correct values.
nodeName( elem, "tr" )
) ||
if ( (

// Fall back to offsetWidth/offsetHeight when value is "auto"
// This happens for inline elements with no explicit setting (gh-3571)
val === "auto" ) &&
val === "auto" ||

// Support: IE 9 - 11+
// Use offsetWidth/offsetHeight for when box sizing is unreliable.
// In those cases, the computed value can be trusted to be border-box.
( isIE && isBorderBox ) ||

// Support: IE 10 - 11+
// IE misreports `getComputedStyle` of table rows with width/height
// set in CSS while `offset*` properties report correct values.
// Support: Firefox 70+
// Firefox includes border widths
// in computed dimensions for table rows. (gh-4529)
Comment on lines +149 to +154
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Back when we had lots of support comment, when code was guarded by one, we usually didn't comment what gets worked around as the support comment above the support test was explaining that anyway. Maybe we can remove this comment in that case here.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Although, I see we have a similar comment on3.x-stable here so I'm fine either way.

( !support.reliableTrDimensions() && nodeName( elem, "tr" ) ) ) &&

// Make sure the element is visible & connected
elem.getClientRects().length ) {
Expand Down
52 changes: 52 additions & 0 deletionssrc/css/support.js
View file
Open in desktop
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
import document from "../var/document.js";
import documentElement from "../var/documentElement.js";
import support from "../var/support.js";

( function() {

var reliableTrDimensionsVal,
div = document.createElement( "div" );

// Finish early in limited (non-browser) environments
if ( !div.style ) {
return;
}

// Support: IE 10 - 11+
// IE misreports `getComputedStyle` of table rows with width/height
// set in CSS while `offset*` properties report correct values.
// Support: Firefox 70+
// Only Firefox includes border widths
// in computed dimensions. (gh-4529)
support.reliableTrDimensions = function() {
var table, tr, trStyle;
if ( reliableTrDimensionsVal == null ) {
table = document.createElement( "table" );
tr = document.createElement( "tr" );

table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
tr.style.cssText = "border:1px solid";

// Support: Chrome 86+
// Height set through cssText does not get applied.
// Computed height then comes back as 0.
tr.style.height = "1px";
div.style.height = "9px";

documentElement
.appendChild( table )
.appendChild( tr )
.appendChild( div );

trStyle = window.getComputedStyle( tr );
reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +
parseInt( trStyle.borderTopWidth, 10 ) +
parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;

documentElement.removeChild( table );
}
return reliableTrDimensionsVal;
};
} )();

export default support;
8 changes: 1 addition & 7 deletionstest/unit/dimensions.js
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -627,13 +627,7 @@ QUnit.test( "width/height on an inline element with percentage dimensions (gh-36
}
);

// Support: Firefox 70+
// Firefox 70 & newer fail this test but the issue there is more profound - Firefox doesn't
// subtract borders from table row computed widths.
// See https://github.com/jquery/jquery/issues/4529
// See https://bugzilla.mozilla.org/show_bug.cgi?id=1590837
// See https://github.com/w3c/csswg-drafts/issues/4444
QUnit[ /firefox/i.test( navigator.userAgent ) ? "skip" : "test" ](
QUnit.test(
"width/height on a table row with phantom borders (gh-3698)", function( assert ) {
assert.expect( 4 );

Expand Down
20 changes: 15 additions & 5 deletionstest/unit/support.js
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -58,11 +58,21 @@ testIframe(
var expected,
userAgent = window.navigator.userAgent,
expectedMap = {
ie_11: {},
chrome: {},
safari: {},
firefox: {},
ios: {}
ie_11: {
"reliableTrDimensions": false
},
chrome: {
"reliableTrDimensions": true
},
safari: {
"reliableTrDimensions": true
},
firefox: {
"reliableTrDimensions": false
},
ios: {
"reliableTrDimensions": true
}
};

if ( document.documentMode ) {
Expand Down

[8]ページ先頭

©2009-2025 Movatter.jp