HTML表格 - 单元格跨越

时间:2010-02-12 20:43:21

标签: html html-table

如果我有一个表,在创建表时无法确定列数,并且其行有时可能不包含足以填充每列的数据,那么有没有办法让每行中的最后一个单元格自动调整大小?

我宁愿不必在每行的最后一个单元格上使用colspan,因为在绘制表格时,最大列数是不可预测的。

例如:

-----------------------------------
NEW ROW | FOO | BAR                | <- last cell should span the length of the table
-----------------------------------
NEW ROW | FOO | BAR | TEST | BLAH  | <- no spanning needed, as it contains the most cols
-----------------------------------
NEW ROW | FOO | BAR | TEST         | <- last cell should span the length of the table
-----------------------------------

2 个答案:

答案 0 :(得分:1)

您可以为每一行创建一个单独的表,并使用CSS设置列宽以控制布局。在这种情况下,最后一个单元格的宽度设置为“auto”

或者,如果您知道可能具有的最大列数(或选择超过您将渲染的列数的数字),则可以将最后一个单元格上的colspan设置为等于该数字减去为该行生成的单元格数。

例如,如果您选择100作为您将拥有的最大单元格数,则上面的代码将如下所示...

<TABLE border="1">
   <TR><TD>NEW ROW</TD><TD>FOO</TD><TD COLSPAN="97">BAR</TD></TR>
   <TR><TD>NEW ROW</TD><TD>FOO</TD><TD>BAR</TD><TD>TEST</TD><TD COLSPAN="95">BLAH</TD></TR>
   <TR><TD>NEW ROW</TD><TD>FOO</TD><TD>BAR</TD><TD COLSPAN="96">TEST</TD></TR>
</TABLE>

答案 1 :(得分:0)

如果你正在处理可能是空白的DB记录,那么这个伪代码可以让你开始:

foreach ($query as $row) {
    $max_elements = 5; //per your example
    $number_of_elements = count($row);
    $colspan = $max_elements - $number_of_elements;
    $i = 0;
    while ($i <= $number_of_elements-2) {
        echo "<td>".$row['$i']."</td>";
        $i++;
    }
    echo "<td colspan='$colspan'>".$row['$number_of_elements-1']."</td>";
}

在这个未经测试/未经验证的PHP中,前提是计算每行的项目数,并知道剩余的数量(基于最大数量,如示例中的5)。然后从查询中回显每个项目,并为最后一个项目添加动态生成的colspan#。

调试留给读者练习。