CSS表列autowidth

时间:2011-01-21 10:44:39

标签: html css xhtml css3

鉴于以下内容,我如何将我的上一栏自动调整为其内容? (最后一列应该自动调整宽度到内容。假设我只有1个li元素,它应该收缩而不是3个li元素等):

            <table cellspacing="0" cellpadding="0" border="0">
            <thead><!-- universal table heading -->
                <tr>
                    <td class="tc first"><input type="checkbox" value="true" name="data-1-check-all" id="data-1-check-all"></td>
                    <td class="tc">Type</td>
                    <th>File</th>
                    <th>Sample</th>
                    <th>Action</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>Division 1</td>
                    <td>Division 2</td>
                    <td>Division 3</td>
                    <td>Division 4</td>
                    <td>Division 5</td>
                </tr>
                <tr>
                    <td>Division 1</td>
                    <td>Division 2</td>
                    <td>Division 3</td>
                    <td>Division 4</td>
                    <td class="last">
                        <ul class="actions">
                            <li><a class="iconStats" href="#">Statystyki</a></li>
                            <li><a class="iconEdit" href="#">Edytuj</a></li>
                            <li><a class="iconDelete" href="#">Usuń</a></li>

                        </ul>
                    </td>
                </tr>
            </tbody>
        </table>

的CSS:

table { table-layout: fixed; width: 100%; }
table tr { border-bottom:1px solid #e9e9e9; }
table thead td, th {border-left: 1px solid #f2f2f2; border-right: 1px solid #d5d5d5; background: #ddd url("../images/sprites4.png") repeat-x scroll 0 100% ; font-weight: bold; text-align:left;}
table tr td, th { border:1px solid #D5D5D5; padding:15px;}
table tr:hover { background:#fcfcfc;}
table tr ul.actions {margin: 0;}
table tr ul.actions li {display: inline; margin-right: 5px;}

4 个答案:

答案 0 :(得分:195)

以下内容将解决您的问题:

td.last {
    width: 1px;
    white-space: nowrap;
}

灵活的,基于类的解决方案

更灵活的解决方案是创建一个.fitwidth类并将其应用于您想要确保其内容适合一行的任何列:

td.fitwidth {
    width: 1px;
    white-space: nowrap;
}

然后在您的HTML中:

<tr>
    <td class="fitwidth">ID</td>
    <td>Description</td>
    <td class="fitwidth">Status</td>
    <td>Notes</td>
</tr>

答案 1 :(得分:24)

如果你想确保最后一行没有换行并按照你想要的方式调整,请看看

td {
 white-space: nowrap;
}

答案 2 :(得分:1)

您可以指定除最后一个表格单元格之外的所有宽度,并添加一个table-layout:fixed和一个宽度到表格。

你可以设置

table tr ul.actions {margin: 0; white-space:nowrap;}

(或者像Sander建议的那样将其设置为最后一个TD。)

这会强制内联LI不会破坏。不幸的是,这不会导致包含UL(和此父TD)中的新宽度计算,因此不会自动调整最后一个TD。

这意味着:如果内联元素没有给定的宽度,则TD的宽度始终首先自动计算(如果未指定)。 然后呈现具有此计算宽度的内联内容并应用white-space - 属性,将其内容扩展到计算边界之外。

所以我猜测如果没有具有特定宽度的最后一个TD中的元素,则不可能。

答案 3 :(得分:-1)

使用自动和最小或最大宽度,如下所示:

td {
max-width:50px;
width:auto;
min-width:10px;
}