2009-12-19 66 views
5

我有一个包含8列和多行的HTML表格。每个单元格的内容都是动态生成的,很难预测任何列的宽度。我设置表宽度= 100%,因为我希望表格占用整个div的宽度。我希望列2到8保持宽度相同,如果我没有设置表宽度。然后,我想第一列扩大其宽度,使表宽度变为100%。这可能吗?当表格宽度= 100%时,在HTML表格中有第一列灵活

回答

2

设置2 - 8的显式宽度,单元格1将用剩余空间确定其自己的宽度。你也可以在第一个单元格中设置空白区域的no-wrap,这样内容不会换行,但是在必要时强制单元格增长。

0

我认为你的问题并不完整,因为从字面上看,答案是根本不设置任何列宽。每一列都将占用尽可能多的空间,并且它们将以某种方式分配给彼此。

你能澄清你想达到什么吗?由所述第一小区设置到100%

+0

我知道,如果我根本没有设置任何列宽度,浏览器将在整个列中分配额外的空间。问题是,我希望所有这些额外空间都转到第1列。 – Brian 2009-12-19 02:56:18

3
<div> 
<table width="100%"> 
<tr> 
<td width="100%"></td> <- this is col 1 
<td></td><td></td><td></td><td></td><td></td><td></td><td></td> <- cols 2-8 
</tr> 
</table> 
</div> 

,这将迫使该小区尝试是尽可能的宽,同时仍遵守细胞的其余部分的宽度。如果单元格2-8包含文本,则可以添加以使这些单元格内的文本不会被缠绕,因为第一个单元格的宽度为100%。

+0

​​元素中的宽度属性被WWW(万维网)联盟视为响亮。 – rbtLong 2013-01-02 02:25:26

+0

[HTML5不支持](http://www.w3schools.com/tags/tag_td.asp)。改用CSS。 – mbomb007 2016-02-16 16:31:51

5

在表格和所有其他列上设置宽度;剩下的一列将占用所有的余地。

诀窍是使用table-layout: fixed样式,以便自动布局猜测算法(以及IE特别糟糕的解释)在列中的内容数量大于预期时不会介入并混乱。

在固定布局模式下,第一行单元格或<col>元素设置宽度;更多的行不影响宽度。这使渲染速度更快;你应该为每个表都使用固定布局。

<table> 
    <col class="name" /><col class="data" /><col class="data" /><col class="data" /> 
    <col class="data" /><col class="data" /><col class="data" /><col class="data" /> 
    <tr> 
     <td>tiddle om pom pom</td> 
     <td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td> 
    </tr> 
</table> 

table { width: 100%; table-layout: fixed; } 
col.data { width: 2em; }