Firefox中没有显示边框,表格上有边框折叠,位置:tbody上的相对或单元格上的背景颜色

Pet*_*ter 74 css firefox border

请考虑以下HTML:

<html>
<head>
    <style>
        TABLE.data TD.priceCell
        {
            background-color: #EEE;
            text-align: center;
            color: #000;
        }
    
        div.datagrid table
        {
            border-collapse: collapse;
        }
    
        div.datagrid table tbody
        {
            position: relative;
        }
    </style>
</head>
<body>
    <div id="contents" class="datagrid">
        <table class="data" id="tableHeader">
            <thead>
                <tr class="fixed-row">
                    <th>Product</th>
                    <th class="HeaderBlueWeekDay">Price</th>
                    <th class="HeaderBlueWeekDay">Discount</th>
                </tr>
            </thead>
            <tbody>
                <tr style="font-style: italic;">
                    <td>Keyboard</td>
                    <td class="priceCell">20</td>
                    <td style="border-right: #3D84FF 1px solid; border-left: #3D84FF 1px solid;" class="priceCell">2</td>
                </tr>
            </tbody>
        </table>
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

请注意,最后一个单元格的内联样式具有左边框和右边框.你(或至少我)会期望这是可见的.在IE中,情况就是这样.但在Firefox(6)中,事实并非如此.你可以通过以下方式解决

  • div.datagrid table tbody在CSS中删除相对位置
  • 更改div.datagrid table tbodydiv.datagrid table在CSS
  • 删除CSS中的background-colorontable.data td.priceCell
  • 删除CSS中的border-collapseondiv.datagrid table

这是我们代码的简化版本; 我们也解决了它(通过选择选项2).但我想知道的是:

  • 这是Firefox中的错误吗?
  • 这是IE中的错误吗?

尤其是:当CSS原样时,Firefox不会显示边框的原因是什么?

med*_*ngs 162

刚刚遇到这个问题,并找到了一个只有css的解决方案:只需添加background-clip: padding-box到您的td元素.

有关更多信息,请参阅此文章:https://developer.mozilla.org/en-US/docs/CSS/background-clip

  • 你刚刚给我一个真正的头痛,谢谢! (19认同)
  • 嗯,我不明白.文档说它指定背景是否扩展*边界*.我得到它在边界上呈现的印象. (2认同)
  • 我找到的最好的CSS解决方案.感谢分享@medoingthings (2认同)

Bor*_*sky 58

对我来说这看起来像是一个Firefox错误.背景是在边界上绘画; 如果你使用半透明的背景颜色,你可以看到它.

我提交了https://bugzilla.mozilla.org/show_bug.cgi?id=688556

  • 仅供参考,9 年后仍然有效。 (3认同)
  • 2023 年 6 月(12 年后)仍然发生 (3认同)
  • 我遇到了同样的问题.它仍然没有被Firefox修复.在使用:nth-​​child(单数)选择器以及仅向奇数行添加背景时,似乎他们没有认真对待它,这是一个很大的设计问题.我也需要边框以使其完美.Thansk提交错误! (2认同)
  • FYIA,11 年后仍然有效。 (2认同)

小智 12

只是把所有在一个地方.

当你在一个带有折叠边框的表中有一个位置相对的单元格时会产生问题(正如Boris指出并填写了错误https://bugzilla.mozilla.org/show_bug.cgi?id=688556)

这可以使用CSS轻松解决,如user2342963所示(将背景剪辑:填充框添加到单元格).

您可以在这里看到问题(使用Firefox)和修复:http://jsfiddle.net/ramiro_conductiva/XgeAS/

table {border-spacing: 0px;}
td {border: 1px solid blue; background-color: yellow; padding: 5px;}
td.cellRelative {position: relative;}
td.cellRelativeFix {background-clip: padding-box;}
table.tableSeparate {border-collapse: separate;}
table.tableCollapse {border-collapse: collapse;}

<table class="tableSeparate">
    <tbody>
        <tr>
            <td class="cellRelative">position: relative</td>
            <td>position: static</td>
        </tr>
    </tbody>
</table>
<table class="tableCollapse">
    <tbody>
        <tr>
            <td class="cellRelative">position: relative</td>
            <td>position: static</td>
        </tr>
    </tbody>
</table>
<table class="tableCollapse">
    <tbody>
        <tr>
            <td class="cellRelative cellRelativeFix">position: relative</td>
            <td>position: static</td>
        </tr>
    </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

  • 这可以解决FF中的错误,但是在IE中,常规边框内有一个难看的白色边框,我们该如何解决呢? (2认同)

smi*_*t04 8

这是firefox中的一个错误,希望他们能尽快解决.但同时我通过设置我的td细胞来解决这个问题position: static.希望这将有助于其他人.

td {
    position: static;
}    
Run Code Online (Sandbox Code Playgroud)

  • 如果你在同一个 `td` 上使用像 `::before` 或 `::after` 这样的伪元素,`position: static` 会把这些样式弄乱。`background-clip: padding-box` 更安全。 (3认同)