将表列的宽度设置为最大值,使其位于其下方行的内容宽度

时间:2014-08-25 16:23:47

标签: html css google-chrome resize html-table

我正在使用谷歌浏览器呈现此HTML页面:

<html>
<style>
    table {
        width: 100%;
    }
    table, td, th {
        border: 1px solid black;
        text-align: left;
    }
    td {
        vertical-align: top;
    }
</style>
<body>
    <table>
        <tr>
            <th>Name</th>
            <th>Value</th>
        </tr>
        <tr>
            <td>Bobby</td>
            <td>100</td>
        </tr>
    </table>
</body>
</html>

以上代码工作正常。问题是,我希望第一列不会在该列中托管的任何行中调整其宽度超过最长内容宽度的宽度。例如,当我调整窗口大小时,我得到了这个:

*---------------------------*---------------------------*
|Name                       |Value                      |
*---------------------------*---------------------------*
|Bobby                      |100                        |
*---------------------------*---------------------------*

但我希望它是这样的:

*-----*-------------------------------------------------*
|Name |Value                                            |
*-----*-------------------------------------------------*
|Bobby|100                                              |
*-----*-------------------------------------------------*

如何做到这一点?

PS:我仍然希望保留整个表格占据窗口宽度100%的方式。

3 个答案:

答案 0 :(得分:1)

只需将:first-child的宽度设置为1px,它应根据内容更新宽度。

table th:first-child,
table td:first-child {
    width: 1px;
}

http://jsfiddle.net/sbeliv01/ehpvrzk0/

答案 1 :(得分:0)

可以尝试修补基于百分比的宽度以遵守表格的宽度

    tr th, 
    tr td {
        width: 90%;
        /* adjust this if the "label" column needs to be longer */
    }
    tr th:first-child,    
    tr td:first-child {
        width: auto;
    }

http://jsfiddle.net/25pjqva4/

答案 2 :(得分:0)

只需添加到您的第一个子列width:auto属性。

table tr td:first-child {
    width:auto;
}