【发布时间】:2018-07-17 01:30:29
【问题描述】:
来自https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_started/Tables
您可以通过指定空单元格来隐藏它们:hide;。那么,如果一个细胞的 父元素有背景,通过空单元格显示。
它运行良好,但设置border-collapse: collapse; 时却不行。
我找到了Why do the CSS property border-collapse and empty-cells conflict?,但答案只是隐藏了空单元格的边框,并且没有显示父元素的背景。
在这个示例中,如果我们将border-collapse 添加到父元素的table#ok 背景将隐藏自己,但它不应该。
http://jsfiddle.net/37m56vwb/1/
如何解释这种行为以及如何解决它?
UPD
<table>
<tr>
<th></th>
<th></th>
<th>Header 3</th>
</tr>
<tr>
<th></th>
<th></th>
<th>Header 3</th>
</tr>
<tr>
<td>Cell 1</td>
<td>Cell 2</td>
<td></td>
</tr>
<tr>
<td>Cell 1</td>
<td>Cell 2</td>
<td></td>
</tr>
</table>
<hr>
<table id="ok">
<tr>
<th></th>
<th></th>
<th>Header 3</th>
</tr>
<tr>
<th></th>
<th></th>
<th>Header 3</th>
</tr>
<tr>
<td>Cell 1</td>
<td>Cell 2</td>
<td></td>
</tr>
<tr>
<td>Cell 1</td>
<td>Cell 2</td>
<td></td>
</tr>
</table>
和css:
table {
background: green;
border-collapse: collapse;
border-spacing: 0;
}
table#ok { border-collapse: separate; }
th,td {
background: blue;
empty-cells: hide;
border: solid 1px black;
padding: 2px 4px;
}
th:empty, td:empty {
border: 0;
}
【问题讨论】:
-
您应该在问题本身中包含相关代码。 Jsfiddle 是一个有用的补充,而不是包含代码的替代品。