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

发布于 2024-12-18 14:49:02 字数 869 浏览 0 评论 0原文

我的 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 中修复它吗?

I have the following table in my 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>

I want the first column width in the second and third row to just fit the content length (that is why I put width="1px" there). In the mean while, I want to table width to just fit the length of the longest content in the table (which is the first row) instead of spanning to the max-width of its bounding div.

It works in Firefox as shown below.

Firefox display

However, in IE 9 it does not work as expected, as shown.

IE 9 display

I tried to replace width="1px" with width="1%". But then the table width will span to the max-width of the parent div.

Does anyone know how to fix it in IE?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一瞬间的火花 2024-12-25 14:49:02

我刚刚在 IE9 中测试过,将宽度设置为 1px 可以。但它会按照您上面在兼容模式下呈现的方式显示。你声明了你的文档类型和所有其他有趣的东西吗?

这可能是因为您使用旧方法来显示表格。您可以尝试在 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 太愚蠢了,您将不得不关闭兼容性视图(如果在页面上启用了它),因为域内的所有页面都将在兼容性视图中查看。

I have just tested in my IE9, and setting the width to 1px works. But it displays as you presented above in compatibility mode. Have you declared your doctype and all other fun stuff?

It might be because you are using older methods to display the table. You could try styling the table with borders and so on in CSS - such as:

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>

and so forth - I am sure you get the idea. this might stop it automagically displaying in compatibility view (if it is the problem).

And finally, because IE9 is so stupid, you will have to turn off the compatibility view (if it is enabled on the page), because all pages within the domain will be viewed in compatibility view.

苦行僧 2024-12-25 14:49:02

你提到你曾尝试将其设置为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>

You mentioned that you have tried setting it to 1%, did you set the other to 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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文