Firefox中折叠的表格边框有时会丢失

Posted

技术标签:

【中文标题】Firefox中折叠的表格边框有时会丢失【英文标题】:Collapsed table borders in firefox sometimes missing 【发布时间】:2014-12-31 20:58:57 【问题描述】:

html 规范允许在表格中使用 multiple tbody 元素。我有一个这样的案例,Firefox 似乎不想处理折叠的边框。

http://jsfiddle.net/hunvjrp4/

第二个表格的边框在 Chrome 37 中正确显示,但在 Firefox 33 或 Internet Explorer 11 中不显示。

基本上,看起来如果有任何tbody 包含(仅?)隐藏内容,那么它无法正确渲染整个表格的边框。

有没有办法让边框正确绘制?

我尝试过不折叠边框,这似乎可行,但会使此特定表格看起来与网站上的其他表格不同。

上面链接的小提琴代码示例:

With multiple `tbody` elements:
<table class="mainContent">
    <thead><tr><th>hi</th><th>there</th></tr></thead>
    <tbody><tr><td>hi</td><td>there</td></tr></tbody>   
    <tbody><tr><td>hi</td><td>there</td></tr></tbody>
    <tbody><tr><td>hi</td><td>there</td></tr></tbody>
    <tbody><tr><td>hi</td><td>there</td></tr></tbody>
    <tbody><tr><td>hi</td><td>there</td></tr></tbody>   
</table>
<br />
<br />

如果任何 tbody 元素包含单个 display: none 行,那么事情就会出错:

<table class="mainContent">
    <thead><tr><th>hi</th><th>there</th></tr></thead>
    <tbody><tr><td>hi</td><td>there</td></tr></tbody>   
    <tbody><tr class="hide"><td>hi</td><td>there</td></tr></tbody>
    <tbody><tr><td>hi</td><td>there</td></tr></tbody>
    <tbody><tr><td>hi</td><td>there</td></tr></tbody>
    <tbody><tr><td>hi</td><td>there</td></tr></tbody>   
</table>

还有样式:

table 
    border-collapse: collapse;

table tr td 
    border: solid 1px #ccc;
    padding: 4px;

.hide 
    display: none;

【问题讨论】:

我对题外话结束投票很好奇。这似乎是关于特定编程情况的有效问题。 我遇到了同样的问题。你有没有找到解决方案或解决方法?谢谢 对不起 - 我已经有一段时间没有研究它了。我不记得我是否找到了解决办法。我想我最终决定暂时接受它(不太理想)。 【参考方案1】:

这是一个非常奇怪的行为,在我看来可能是一个错误。

我尝试通过一些解决方法来解决它,第一个成功的方法是将.hide 类应用于tbody 标记而不是TR,但后来我认为你可能有一些理由将它应用于表格行,所以我转向了“后代选择器”技术。

Look at this updated example。唯一的区别是 display:none 应用于TD,而在 html 中继续将.hide 类设置为TR

.hide td 
    display: none;

【讨论】:

以上是关于Firefox中折叠的表格边框有时会丢失的主要内容,如果未能解决你的问题,请参考以下文章

在 Firefox 表格边距不折叠

添加行时 Firefox 单元格边框呈现错误

由于边框折叠属性,表格的边框半径不起作用

带有边框折叠的 Firefox 1 像素错误,解决方法?

CSS中的表格边框颜色与边框折叠

模拟列表中的边框折叠(无表格)