css – 为什么Firefox不用空tbody渲染表的边框?

前端之家收集整理的这篇文章主要介绍了css – 为什么Firefox不用空tbody渲染表的边框?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当表具有空tbody时,Firefox无法正确呈现表格单元格边框.

但是如果使用伪选择器tbody:empty {display:none;}来隐藏tbody元素,则所有内容都按预期呈现.

jsfiddle

table {
    border-collapse: collapse;
}
th,td {
    border: 1px solid #000;
}

.fixed tbody:empty {
    display: none;
}
<table class="broken">
    <thead>
        <tr>
            <th>1</th>
            <td>2</td>
            <td>3</td>
        </tr>
    </thead>
    <tbody></tbody>
    <tfoot>
        <tr>
            <th>1</th>
            <td>2</td>
            <td>3</td>
        </tr>
    </tfoot>
</table>

<hr />

<table class="fixed">
    <thead>
        <tr>
            <th>1</th>
            <td>2</td>
            <td>3</td>
        </tr>
    </thead>
    <tbody></tbody>
    <tfoot>
        <tr>
            <th>1</th>
            <td>2</td>
            <td>3</td>
        </tr>
    </tfoot>
</table>

解决方法

它很可能属于Firefox上的 Bug 409254Bug 217769.

旁注:虽然空的tbody在HTML 5中有效,但每个行组中的单元格数应该在一个表中匹配(除了使用colspan).

解决方法是在表格和单元格元素上单独绘制边框.

table {
    border-collapse: separate; /*changed from collapse*/
    border-spacing: 0;
    border: 1px solid;
    border-width: 0 0 1px 1px; /*draw bottom and left borders*/
}
th,td {
    border: 1px solid;
    border-width: 1px 1px 0 0; /*draw top and right borders*/
}

jsfiddle

猜你在找的CSS相关文章