【问题标题】:Center align one table cell under two others将一个表格单元格居中对齐在另外两个下方
【发布时间】:2012-12-30 03:14:30
【问题描述】:

这就是我想要完成的:

|---------| |----------|
| TableC1 | | TableC2  |
|---------| |----------|
     |------------|
     | TableC3    |
     |------------|

您可以在上面看到这就是我想要完成的。 TableCell1 和 TableCell2 在表格的中心很好地对齐,但是由于我只想在它们下面有一个表格单元格,所以 TableCell3 只是转到一侧,左侧或右侧无关紧要。

这是我如何编写它的sn-p:

HTML:

<table id = "some-boxes">

<tr>
<td id = "first-box">
SOME TEXT101
</td>

<td id = "second-box">
SOME TEXT202
</td>
</tr>

<td id = "third-box">
SOME TEXT303
</td>
</table

CSS:

#first-box{
   width: 100px;
}
#second-box{
   width: 100px;
}
#third-box{
   width: 200px;
   text-align: center;
   margin-left: 50%;
   margin-left: 50%;
}

希望有人能解答我的这个谜团。谢谢你:)

【问题讨论】:

  • 您是否有理由希望使用表格而不只是使用 div? div 示例:jsfiddle.net/A7hAX
  • 不仅标记格式不正确(最后一个单元格缺少tr),而且这看起来不像表格数据。
  • 我故意错过了最后一个的 tr,因为它使表格单元格移动到一个站点 - 我相信。因此我删除了它,希望使它更可移动。

标签: html css alignment center css-tables


【解决方案1】:

使用colspan 指定您希望&lt;td&gt; 标记占用多少列。

<td id = "third-box" colspan="2">
SOME TEXT303
</td>

这是一个视觉示例。我刚刚启用了边框来演示: http://codepen.io/AlienHoboken/pen/uFlIC

此外,您可以摆脱保证金规则。

【讨论】:

  • colspan="2"。 2 2px 2cm 2mm...多少列?什么。无论如何,我将再次更改为 div,如果这不起作用,我想事情会变得容易一些。谢谢!
  • @johnsmith colspan="2", "col" 是度量单位。如表格中的单元格将跨越两列。除了电子邮件和表格数据,你真的不应该使用表格,因为你最终不得不遵循这样烦人的嵌套规则。
  • @JohnSmith Colspan 以列为单位。 &lt;tr&gt; 中的每个 &lt;td&gt; 占用一列。所以当你说colspan="2" 你是在说,我希望你占据两列而不是一列。
【解决方案2】:

表格单元格不遵守边距或对象对齐规则。他们在表格中定义了位置。第 2 行中的第一个单元格将始终从第 1 行中的第一个单元格下方开始。您可以使用 colspan=2 使单元格跨越两列,但它不能与另一个单元格部分重叠,除非您玩跨列的数学游戏。你最好在 div 项目上使用 CSS 定位。

【讨论】:

  • 好吧,那我就切换到使用 div。您看到了,我确信使用表格单元格比使用 div 更容易。好吧,我想我会改变的。格拉西亚斯! =)
【解决方案3】:

如果您处于无法修改标记的位置,这将起作用:

http://jsfiddle.net/Aam6T/

table#some-boxes, table#some-boxes tr {
  display: block;
  text-align: center;
}

table#some-boxes td {
  display: inline-block;
  border: 1px solid;
}

但是,前面行中的单元格将不再排列。

【讨论】:

    【解决方案4】:

    首先,您应该通过在&lt;td id="third-box"&gt;...&lt;/td&gt; 周围包裹一个&lt;tr&gt;&lt;/tr&gt; 标记来更正您的表格。那么你应该在#third-box 中使用colspan 属性。

    <table id="some-boxes">
        <tr>
            <td id="first-box">
                SOME TEXT101
            </td>
            <td id="second-box">
                SOME TEXT202
            </td>
        </tr>
        <tr>
            <td id="third-box" colspan="2">
                SOME TEXT303
            </td>
        </tr>
    </table>
    

    上面的内容将在第二行为您提供全表宽度的第三个单元格。但是,如果您想在“绘图”中生成精确的表格(第三个单元格大小相同,并以第二行为中心):

    <table id="some-boxes">
        <tr>
            <td id="first-box">
                SOME TEXT101
            </td>
            <td id="second-box">
                SOME TEXT202
            </td>
        </tr>
        <tr>
            <td id="third-box" colspan="2">
                <div id="third-box-inner">
                    SOME TEXT303
                </div>
            </td>
        </tr>
    </table>
    

    使用额外的 CSS 声明:

    div#third-box-inner
    {
        width: 100px;
        text-align: center;
        margin-left: 50px;
    }
    

    还有一个建议:设置 HTML 属性时,等号前后不要使用空格。

    希望这会有所帮助。

    【讨论】:

    • 感谢您的帮助。我想我有足够的技巧可以持续一段时间,而且我猜还有 3 或 4 个实际解决方案。虽然为什么我不应该在等号前后使用空格?那不好吗?这只是我的一种“努力使编码器整洁”的做法。
    • 使用空格并没有错,浏览器会处理。但是空格会为您的文档添加额外的字节,并且由于 HTML 文档中使用了太多属性,我真的会考虑这样做以避免不必要的带宽使用。
    猜你喜欢
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 2023-01-29
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    • 2012-03-31
    • 2017-12-31
    相关资源
    最近更新 更多