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

标签 css firefox rendering border

是否有解决以下“向左 1 个像素”错误的解决方法?

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">                                   
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">   
<body>
<div style="padding: 50px">
<div style="border: 1px solid red">Table header info</div>
<table style="border: 1px solid green; border-collapse: collapse; width: 100%">
    <tbody>
        <tr>
            <th>Col1</th>
            <th>Col2</th>
        </tr>
        <tr>
            <td>Hello</td>
            <td>World</td>
        </tr>
    </tbody>
</table>
<div style="border: 1px solid red">Table footer info</div>
</div>
</body>
</html>

看起来像这样:

Firefox CSS bug

是否有任何纯 CSS 解决方案?


编辑

我有点不清楚我的 table ,所以又来了:

边框折叠:

Firefox CSS bug

按照建议使用 cellspacing="0"且不使用 border-collapse:

Firefox CSS bug

所以现在我的表格内的边框加倍,但我希望我的表格有 1px 的边框。

当我从表格中删除 1px 边框时,我以:

Firefox CSS bug

边框在我的 table 内仍然加倍。

我可以只为每个 TD、TH 设置右边框和下边框,为 TR 中的每个第一个 child 设置左边框来实现我想要的,但我认为有更简单的方法吗?

最佳答案

对于那些喜欢将演示文稿排除在标记之外,或者无法访问标记的人,这里有一个纯 CSS 解决方案。我自己刚遇到这个问题,并在 FF3.5、IE6、IE7、IE8、Safari 4、Opera 10 和 Google Chrome 中测试了这个解决方案。

table { border-spacing: 0; *border-collapse: collapse; } 

这会将表格设置为在所有浏览器(包括罪魁祸首 Firefox)中使用边框间距。然后它使用 CSS star hack 仅向 IE 呈现边框折叠规则,它没有正确应用边框间距(如果您不喜欢 hack,您还可以为 IE 包含一个单独的样式表和条件注释)。

如果您更喜欢使用单元格间距,请务必使用它。这只是作为使用 CSS 的替代方法提供的。

关于css - 带有边框折叠的 Firefox 1 像素错误,解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1035706/

相关文章:

html - 使用angular2上的按钮水平滚动

firefox - Greasemonkey 脚本与 Firefox、Safari、Opera 和 chrome 的兼容性(onload 事件)

c - SDL2 中矩形的底边不直

c++ - 如果我没有 VK_KHR_swapchain 扩展,我该如何运行 Vulkan API?

reactjs - 渲染期间加载屏幕(异步渲染)

html - Windows 8 上的 Chrome 中的输入边框被截断

html - 切换按钮不起作用,而是看起来像使用 css 的常规复选框

css - 部分网页在主机加载

javascript - 为什么这个 javascript 在 FF 和 IE 中产生不同的输出?

Firefox Quantum响应式设计模式: settings for align left & default size?