html - 边框折叠和边框左/右的奇怪问题

标签 html css

我在 Firefox 中遇到一些关于表格的奇怪问题。

我想创建的是创建一个网格和思考边界。

这是模型(感谢 inkscape)。

Mockup http://dl.dropbox.com/u/1961549/StackOverflow/StrangeTableBorder/Mockup.png

这是我的代码:

<style>
<b>.mytable { border-collapse: collapse; }</b>

.mytd {
    width : 1.3em;

    border  : 1px solid black;
    padding : 0px;
    margin  : 0px;

    text-align : center;
}

.mytd-top    { border-top:    3px solid black; }
.mytd-bottom { border-bottom: 3px solid black; }
<b>.mytd-left   { border-left:   3px solid black; }</b>
<b>.mytd-right  { border-right:  3px solid black; }</b>
</style>

<table class="mytable">
    <tr><td class="mytd mytd-top    mytd-left">1</td><td class="mytd mytd-top"   >2</td><td class="mytd mytd-top    mytd-right">3</td></tr>
    <tr><td class="mytd             mytd-left">4</td><td class="mytd"            >5</td><td class="mytd             mytd-right">6</td></tr>
    <tr><td class="mytd mytd-bottom mytd-left">7</td><td class="mytd mytd-bottom">8</td><td class="mytd mytd-bottom mytd-right">9</td></tr>
</table>

上面的代码应该给我我想要的,但它没有。当 border-collapsecolllapse 时,左右边框似乎有问题。

上面的模式让我明白了:

Img 1 http://dl.dropbox.com/u/1961549/StackOverflow/StrangeTableBorder/Img1.png

没有外边框!!!


注意三行粗体。

问题似乎只是左右而不是上下

如果三行是:

<b>.mytable    { border-collapse: collapse; }</b>
<b>.mytd-left  { }</b>
<b>.mytd-right { }</b>

我得到:

Img 2 http://dl.dropbox.com/u/1961549/StackOverflow/StrangeTableBorder/Img2.png

顶部和底部没问题。


如果三行是:

<b>.mytable    { border-collapse: collapse; }</b>
<b>.mytd-left  { border-left:   3px solid black; }</b>
<b>.mytd-right { }</b>

我得到:

Img 3 http://dl.dropbox.com/u/1961549/StackOverflow/StrangeTableBorder/Img3.png

问题似乎是左右孤立的。


如果三行是:

<b>.mytable    { }</b>
<b>.mytd-left  { border-left:   3px solid black; }</b>
<b>.mytd-right { border-right:  3px solid black; }</b>

我得到:

Img 4 http://dl.dropbox.com/u/1961549/StackOverflow/StrangeTableBorder/Img4.png

没有 collapse 所有边框都按预期显示。


这是怎么回事?

有解决办法吗? collapse 的替代品?

我只针对 FF(内部元素),所以我真的不关心它是否在其他浏览器中工作。

提前致谢。

最佳答案

我不知道为什么 firefox 会这样,但我只是找到了一个适用于 firefox 的简单解决方案。

将表格设置为 border-collapse:collapse;和以前一样,为所有单元格提供通常的 1px 边框(不要介意左、右等,你不需要它),但是将所有 tr 包装到一个 tbody 元素中,并为 tbody 元素提供 3px 边框你想。在 ff 3.5 中工作正常。

简单的例子:

<table style="border-collapse:collapse;">
    <tbody style="border:3px solid;">
        <tr>
            <td style="border:1px solid;">a</td>
            <td style="border:1px solid;">b</td>
        </tr>
    </tbody>
</table>

给你一个表格,在 a 和 b 之间有一个 1pc 的边框,整个表格周围有一个 3px 的边框。

旁注,如果我正确理解 css2.1 文档,如果表格设置为 border-collapse:collapse,tbody 元素只能有边框样式

关于html - 边框折叠和边框左/右的奇怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1757628/

相关文章:

javascript - 通过单击链接突出显示另一页的元素

html - 放大后背景图像缩小,然后屏幕旋转并缩小

javascript - joomla IE9 云缩放插件扩展上的图像放大器问题

javascript - 如何通过 innerHTML 设置图像

javascript - 我想创建一个循序渐进的订单,这就是我目前所拥有的

html - slider 导航在平板电脑宽度中的定位问题

php - PHP 表单上的多个复选框选项

javascript - 检查 Fabric.js 中 Canvas 是否为空

javascript - 获取所有 css 类背景和颜色属性值

javascript - jquery:厌倦了 css().css().css()