【问题标题】:Eliminate gap between tbody tags消除 tbody 标签之间的间隙
【发布时间】:2013-07-03 21:35:16
【问题描述】:

当两个tbody标签都像这样内联显示时,有没有办法消除它们之间的轻微间隙?

http://jsfiddle.net/kttss/

正如您在小提琴中看到的,在两张桌子之间有一个微小的间隙。我知道我可以通过使用负边距手动摆脱这个问题,但这似乎很麻烦,因为我有一个可变数量的表 tbodys。

<table style="margin:0;" border="1">
   <tbody  style="display: inline-block;  margin:0;">
      <tr>
         <td>
            1
         </td>
         <td>
            2
         </td>
      </tr>
      <tr>
         <td>
            3
         </td>
         <td>
            4
         </td>
      </tr>
   </tbody>
   <tbody  style="display: inline-block; margin: 0;">
      <tr>
         <td>
            1
         </td>
         <td>
            2
         </td>
      </tr>
      <tr>
         <td>
            3
         </td>
         <td>
            4
         </td>
      </tr>
   </tbody>
</table>

【问题讨论】:

  • 这很有趣。您的图片并没有真正显示问题,但在您的小提琴中很明显
  • 您需要两个内联tbodys 有什么具体原因吗?为什么不把它们合二为一呢?

标签: html css


【解决方案1】:

看起来将border-spacing: 0; 添加到您的table 元素会有所帮助。没有这个,每个边框周围都有 2 个像素,这意味着表格之间有 4 个像素。

【讨论】:

  • 这里有一个fiddle 供您回答。我相信您仍然应该删除/注释掉 tbody(ies) 之间的空白或浮动元素,因为即使您的小提琴在 Chrome 中运行良好,Firefox 也会在 tbody 之间呈现一个空格。无论如何,+1 是为了更好的补充。
【解决方案2】:

使用浮点数代替inline-block 显示。您还必须使用border-collapse:collapse 折叠边框,或者也使用@JoeEnos 的答案中的border-spacing: 0

table { border-collapse:collapse; }
tbody { float:left; }

Demo

使用display: inline-block,标记中的空白(换行符、制表符)被折叠并呈现为单个空格。 floats 不受此影响。

【讨论】:

  • 虽然没有必要收起边框,但确实让它看起来更统一
  • @CodyGuldner 是的,没有折叠,表格和tbody(ies) 之间有一个奇怪的填充。 =] 好吧,border-spacing:0 也解决了这个特定问题,就像@Joe 的回答一样。