【发布时间】:2018-12-18 19:00:20
【问题描述】:
我正在努力解决渲染问题(这可能是 Firefox 中的一个错误,因为 Chrome 和 Edge 看起来不错)
空的<td>(表格单元格)会使整行更高如果有padding 和vertical-align 应用于此单元格(或包含行)。如果表格单元格非空 - 高度问题就消失了。添加一个愚蠢的&nbsp; 可以解决这个问题。
这是代码示例
table {float:left;margin-right:10px} /* so tables are side-by-side just to demonstrate the bug */
td {
vertical-align:baseline;
padding-bottom:20px;
}
<table border=1>
<tr>
<td>this table is taller</td>
<td></td>
</tr>
</table>
<table border=1>
<tr>
<td>this table is shorter</td>
<td>beacuse there's text here</td>
</tr>
</table>
jsfiddle:http://jsfiddle.net/snhvc6dx/10/
有人遇到过类似情况和/或知道解决方法吗?
PS。我使用的是 Firefox 62.0b6
更新:vertical-align:baseline 非常(!)经常由许多前端框架的“CSS-reset”样板添加,所以它不是我的选择。至于“为什么有人需要一个空的td?”好吧,这个表是在运行时呈现的,数据库中没有那个单元格的数据。
【问题讨论】:
-
它与基线对齐有关,但由于它在所有浏览器中都不相同,所以不容易说出原因
-
如果您不喜欢我的回答,您需要更具体地了解您要查找的内容。解释为什么你想要一个空的 td 元素以及它的用途。
-
@ChrisHitchcock 有一个空的表格单元格可能有很多原因,但这对问题并不重要。该问题询问为什么空表格单元格创建的基线与带有文本的单元格不同。
-
仅作记录:我没有对任何人的答案投反对票(而且从来没有,b/c 投反对票很糟糕)。
-
我认为这是 Firefox 中的一个错误。在我看来,当单元格框不包含行框时,Firefox 将其基线作为填充框的底部,因此单元格中的文本与在该文本上方创建空间的内容垂直对齐。这将有效地与空内联块的基线定义一致。但是空单元格的基线定义是不同的。在那里,基线是内容框的底部,在这种情况下,文本上方不需要额外的空间来强制垂直对齐。
标签: html css firefox html-table