表中奇数列的偶数个 td 元素

Posted

技术标签:

【中文标题】表中奇数列的偶数个 td 元素【英文标题】:Even number of td elements in table with odd number of columns 【发布时间】:2016-09-01 03:40:17 【问题描述】:

我觉得这是其中一个涵盖得很好的问题,但我很难找到一个直接的答案或解决方案。

根据 W3 表格规范:

列数等于列数最多的行所需的列数,包括跨多列的单元格。对于列数少于此数量的任何行,应使用空单元格填充该行的末尾。

这当然是显而易见的并且是有道理的,但我认为如果特定行的内容没有达到行宽,想要居中它并不是不合理的。

在我的例子中,我有一个 3 列宽的图标表,但是有 11 个图标使最后一行偏离中心。我一直在努力想办法解决这个问题,但我能想到的就是做一些 hacky 或为这些图标创建一个包含两列的新表格。

一些示例代码来说明问题:

<table>
    <tr>
        <td>Content</td>
        <td>Content</td>
        <td>Content</td>       
    </tr>
    <tr>
        <td>Content</td>
        <td>Content</td>
    </tr>
</table>

我想要什么

000 000 000
  000 000

我得到了什么

000 000 000
000 000

有什么想法吗?

【问题讨论】:

你能分享一些代码吗? 嗯当然,但是这个问题真的不需要。 代码比想象更能说明问题。 我刚刚阅读了你关于“在我的情况下”的最后一段,这就是我要求它的原因:) 已更新。了解我想要实现的目标。 【参考方案1】:

您可以使用一些小技巧来解决此问题。使用以下 CSS。 Demo

table 
  display:block;
  width: 100%;

table tbody 
  display:block;
  width: 100%;

table tr 
  display: table;
  width: 100%;

table tr td 
  width: 50%;
  text-align: center;

【讨论】:

这适用于 Chrome,但不适用于 Firefox(不确定 Safari/IE)。 这是怎么做到的?你能解释一下吗? @GHOST-34- 你确定它不能在 Firefox 上运行吗?因为它在我的最后工作。你用的是什么版本? @DarrenSweeney 这样做没什么复杂的。我们只是改变了表格的显示类型。【参考方案2】:

没有css嵌套表

<table border="1">
     <tr>
        <td> 
          <table border="1">
            <tr>
             <td>Content</td>
             <td>Content</td>
             <td>Content</td>       
           </tr>    
         </table>
      </td>              
    </tr>
    <tr>
        <td>
            <table  border="1">
               <tr>
                 <td align="center">Content</td>
                 <td align="center">Content</td>              
              </tr>   
            </table>
        </td>       
    </tr>
</table>

【讨论】:

这对我有用,但男孩太丑了。但是,我的特殊情况并不像我发布的示例代码那么简单,因此对于遇到相同问题的任何人,请先尝试其他问题。这绝对是不得已而为之。【参考方案3】:

如果您不想使用 CSS,这个原生技巧可能会对您有所帮助。 CSS Flexbox 可能不适用于所有浏览器。

公式 TotalColSpan = LowerBox * UpperBox; 上排 colspan = TotalColSpan / LowerBox; 下排 colspan = TotalColSpan / UpperBox;

<table border="1">
    <tr>
        <td colspan="2">Content</td>
        <td colspan="2">Content</td>
        <td colspan="2">Content</td>       
    </tr>
    <tr>
        <td colspan="3">Content</td>
        <td colspan="3">Content</td>
    </tr>
</table>

编辑 1:

这是如何工作的? Demo

我们使用了表格的 colspan 属性,colspan 属性定义了一个单元格应该跨越的列数。

当我们写colspan="2" 时,这意味着实际上有两个单元格,但是它们被合并了。这里我们写了 3 colspan="2",这意味着我们实际上有 6 个表格单元格。在下一行,我们可以拆分这 6 个表格单元格。我们在第二行使用了colspan="3",这意味着它将占用 3 个单元格并合并。

<table border="1">
    <tr>
        <td>Content</td>
        <td>Content</td>     
        <td>Content</td>     
        <td>Content</td>     
        <td>Content</td>     
        <td>Content</td>     
    </tr>
    <tr>
        <td colspan="2">Content</td>
        <td colspan="2">Content</td>
        <td colspan="2">Content</td>           
    </tr>
    <tr>
        <td colspan="3">Content</td>
        <td colspan="3">Content</td>
    </tr>
</table>

【讨论】:

以上是关于表中奇数列的偶数个 td 元素的主要内容,如果未能解决你的问题,请参考以下文章

PHP获取数组中奇偶数

PHP获取数组中奇偶数

匹配所有索引值为偶数/奇数的元素,从 0 开始计数

Codeforces 1373D - Maximum Sum on Even Positions (最大子段和)

二分查找偶数

1931: 偶数求和