【问题标题】:How do I apply only horizontal cell spacing to a HTML table?如何仅将水平单元格间距应用于 HTML 表格?
【发布时间】:2012-06-10 00:56:01
【问题描述】:

我最近发现我需要在我的表格中使用 cellspacing 属性,但我想知道我是否可以让它只在水平方向上工作。我不希望它垂直展开,这会弄乱我整个页面的布局。

【问题讨论】:

标签: html html-table


【解决方案1】:

比设置cellspacing="10" 更好的方法是使用CSS。您可以使用以下 CSS 来定位表格的单元格间距。

table {
  border-spacing: 10px 0;
}

第一个值指定水平间距,第二个值指定垂直间距。

【讨论】:

  • IE 8 及更早版本无法识别border-spacing 属性。
  • 这在 Chrome 中不适合我。此处描述的透明边框:stackoverflow.com/questions/656207/…
  • 您还需要添加 border-collapse: separate; 才能使用此功能
【解决方案2】:

如果您只需要将单元格 contents 分开,请在单元格内使用间距(并在 HTML 中设置 cellspacing=0)。支持 CSS 的浏览器普遍支持这一点。

如果您确实需要将单元格本身分开,以便它们的边框或彩色背景之间有间距,那么border-spacing 可以解决问题,但仅限于支持的浏览器。

根据上下文,您甚至可以考虑通过将单元格内容放在div 中来模拟单元格间距,设置为覆盖单元格区域,但所需的填充除外,这看起来像单元格间距。然后,您可以在这些 div 元素上设置任何所需的边框或背景。

【讨论】:

    【解决方案3】:

    是的,我知道内容和样式的分离是丑陋和可恶的,但添加间隔(不可见)列似乎是唯一在所有平台上始终有效的方法。

    在这里,我在第一行放了一些空表数据,并给它们一个宽度(以像素为单位)。我在连续的行中制作了相应的空表数据。感觉是真正的老派,但它既简单又有效。

    <table>
        <tr>
            <td>some content for column 1</td>
            <td width="18" />
            <td>other content for 2nd visible column (actually column 3)</td>
            <td width="18" />
            <td>content for 3rd visible column (actually column 5)</td>
        </tr>
    
        <tr>
            <td><img src="image_for_column 1.png" /></td>
            <td />
            <td><img src="image_for_column 2.png" /></td>
            <td />
            <td><img src="image_for_column 3.png" /></td>
        </tr>
    
    </table>
    

    【讨论】:

    • 值得注意的是,虽然这在视觉上有效,但它与内容和语义相混淆。一种首选方法将促进 CSS,并且不会干扰其他(非视觉)系统解释数据的方式。
    • @ACJ 你读过第一句话的第一部分吗?我全心全意地承认这一限制。但这是为了完整性而包括在内。有时花费额外的时间来设置一个新的 CSS 文件是不值得的——老派。
    • 是的,我做到了。因为这个问题对我很重要,所以我想提供一些强调和澄清。
    猜你喜欢
    • 2010-10-13
    • 2023-03-19
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 2022-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多