Bug 248239 - Change standards mode height calculations for table cells to use content-box sizing rather than border-box sizing by default (and to honor -moz-box-sizing, which we do not do in quirks mode). Also remove -moz-box-sizing: border-box from default style for caption element (all modes). r=dbaron

This commit is contained in:
Tal Aloni 2012-06-30 12:01:31 -04:00
Родитель 880883830e
Коммит 6d60643aca
8 изменённых файлов: 31 добавлений и 8 удалений

Просмотреть файл

@ -10,6 +10,7 @@ td, th {
background-color: lime;
width:100px;
height:100px;
-moz-box-sizing:border-box;
}
td {
border-top: 4px solid lime;

Просмотреть файл

@ -11,6 +11,7 @@ td, th {
width:100px;
height:100px;
border:4px solid lime;
-moz-box-sizing:border-box;
}
td {
border-top:hidden;

Просмотреть файл

@ -9,10 +9,10 @@ div {position:absolute; border:green 4px solid}
</head>
<body>
<!-- the height for table cells includes the border -->
<!-- in standards mode, the height for table cells does not includes the border -->
<div>
<table cellspacing="0">
<tr><td style="border:solid 4px orange; height:34px">cell 1</td></tr>
<tr><td style="border:solid 4px orange; height:30px">cell 1</td></tr>
</table>
</div>
</body>

Просмотреть файл

@ -13,7 +13,7 @@ caption {border:solid 4px green}
</head>
<body>
<!-- by default, td has padding of 1px -->
<table style="border-collapse:collapse;"><caption>caption</caption>
<tr><td style="border:solid 4px orange; height:30px">cell 1</td></tr>
</table>

Просмотреть файл

@ -13,7 +13,7 @@ caption {border:solid 4px green}
<table cellspacing="0" cellpadding="0"><caption>caption</caption>
<tr>
<td style="border:solid 4px orange; width:102px; height:34px">cell 1</td>
<td style="border:solid 4px orange; width:102px; height:32px">cell 1</td>
</tr>
</table>
</body>

Просмотреть файл

@ -393,7 +393,6 @@ table[rules][rules="groups"] > tbody {
caption {
display: table-caption;
text-align: center;
-moz-box-sizing: border-box;
}
table[align="center"] > caption {

Просмотреть файл

@ -603,11 +603,33 @@ nsTableRowFrame::CalculateCellActualHeight(nsTableCellFrame* aCellFrame,
PRInt32 rowSpan = tableFrame->GetEffectiveRowSpan(*aCellFrame);
switch (position->mHeight.GetUnit()) {
case eStyleUnit_Coord:
specifiedHeight = position->mHeight.GetCoordValue();
case eStyleUnit_Coord: {
nscoord outsideBoxSizing = 0;
// In quirks mode, table cell width should be content-box, but height
// should be border-box.
// Because of this historic anomaly, we do not use quirk.css
// (since we can't specify one value of box-sizing for width and another
// for height)
if (PresContext()->CompatibilityMode() != eCompatibility_NavQuirks) {
switch (position->mBoxSizing) {
case NS_STYLE_BOX_SIZING_CONTENT:
outsideBoxSizing = aCellFrame->GetUsedBorderAndPadding().TopBottom();
break;
case NS_STYLE_BOX_SIZING_PADDING:
outsideBoxSizing = aCellFrame->GetUsedBorder().TopBottom();
break;
default:
// NS_STYLE_BOX_SIZING_BORDER
break;
}
}
specifiedHeight = position->mHeight.GetCoordValue() + outsideBoxSizing;
if (1 == rowSpan)
SetFixedHeight(specifiedHeight);
break;
}
case eStyleUnit_Percent: {
if (1 == rowSpan)
SetPctHeight(position->mHeight.GetPercentValue());

Просмотреть файл

@ -445,7 +445,7 @@ MochiKit.Base.update(MochiKit.Style, {
(parseFloat(self.getStyle(elem, 'borderRightWidth')) || 0)
);
if (tableCell) {
if (/Gecko|Opera/.test(navigator.userAgent)
if (/Opera/.test(navigator.userAgent)
&& !/Konqueror|AppleWebKit|KHTML/.test(navigator.userAgent)) {
var borderHeightQuota = 0;
} else if (/MSIE/.test(navigator.userAgent)) {