如何使列的宽度适合HTML表中的内容?

时间:2011-11-29 02:32:35

标签: html css internet-explorer html-table

我的HTML中有以下表格:

<div style="max-width:700px;">
    <table border="1">
        <tr><td colSpan="2">this is a loooooooooooooooong text</td></tr>
        <tr><td width="1px">a:</td><td >b</td></tr>
        <tr><td width="1px">c:</td><td >d</td></tr>
    </table>
<div>

我希望第二行和第三行中的第一列宽度恰好符合内容长度(这就是我放置width="1px"的原因)。同时,我希望表宽度恰好适合表中最长内容的长度(这是第一行),而不是跨越到其边界div的最大宽度。

它适用于Firefox,如下所示。

Firefox display

然而,在IE 9中它没有按预期工作,如图所示。

IE 9 display

我尝试将width="1px"替换为width="1%"。但是表格宽度将跨越父div的最大宽度。

有没有人知道如何在IE中修复它?

2 个答案:

答案 0 :(得分:13)

我刚刚在我的IE9中测试过,并将宽度设置为1px。但它显示为您在兼容模式上面的中显示的内容。你有没有宣布你的doctype和所有其他有趣的东西?

可能是因为您使用旧方法来显示表格。您可以尝试在CSS中使用边框等设置表格样式 - 例如:

table, td, tr, th{
  border:1px solid #f0f;
}

.onepx{
  width:1px;
}



<div style="max-width:700px;">
  <table>
    <tr><td colspan="2">this is a loooooooooooooooong text</td></tr>
    <tr><td class="onepx">a:</td><td>b</td></tr>
    <tr><td class="onepx">c:</td><td>d</td></tr>
  </table>
<div>

等等 - 我相信你明白了。这可能会阻止它在兼容性视图中自动显示(如果是问题)。

最后,由于IE9非常愚蠢,您必须关闭兼容性视图(如果在页面上启用),因为域中的所有页面都将在兼容性视图中查看。

答案 1 :(得分:2)

你提到你已经尝试将其设置为1%,你是否将另一个设置为99%?

<tr><td width="1%">a:</td><td width="99%">b</td></tr>
<tr><td width="1%">c:</td><td width="99%">d</td></tr>