HTML 表格 - 固定和多变量列宽

Posted

技术标签:

【中文标题】HTML 表格 - 固定和多变量列宽【英文标题】:HTML Table - Both fixed and multiple variable column widths 【发布时间】:2014-03-06 06:47:00 【问题描述】:

我必须建立一个有 5 列的表格。表格宽度是可变的(内容宽度的 50%)。一些列包含固定大小的按钮,因此这些列应该具有固定大小,例如 100 像素。有些列中有文本,所以我希望这些列具有可变的列宽。

例如:

Column1: 20% of (tablewidth - sum(fixedwidth_columns))'

第 2 列:100 像素

Column3: 40% of (tablewidth - sum(fixedwidth_columns))

第 4 列:200 像素

Column5: 40% of (tablewidth - sum(fixedwidth_columns))

实现这一目标的最佳方法是什么?

【问题讨论】:

只需在相关的<td> 元素上设置width 属性? 嗯,不,那样不行。宽度百分比取总表格宽度的百分比,而不是表格宽度 - 固定列。 JSFiddle: jsfiddle.net/M4Et8 看看这个:***.com/questions/7882979/… 【参考方案1】:

我采用了相同的解决方案: 使用 'table-layout:fixed' 并以 percentages 为单位指定 td 的大小。它适用于我的静态内容,但是当我的内容增加时,td 和所有 tdtr 都会受到干扰。

解决方案:

经过这么多发现,我想出了以下解决方案,通过这个解决方案,您的单个 表格 将能够显示 不同的列大小 而不会在水平轴上展开.

<table style="table-layout: fixed;">
    <tbody>
        <tr>
            <td colspan="7">
                <span>Record Name</span><br>
                <span>FUNNY FUNNEL CAKES</span>
            </td>
        </tr>
        <tr>
            <td colspan="3">
                <span>Event Name</span><br>
                <span>NATIONAL CAKE DAY CELEBRATION</span>
            </td>
            <td colspan="2">
                <span>City</span><br>
                <span>SAN DIEGO</span>
            </td>
            <td colspan="1">
                <span>Zip</span><br>
                <span>92117-4351</span>
            </td>
            <td colspan="1">
                <span>Inspection Type</span><br>
                <span>Routine</span>
            </td>
        </tr>
        <tr>
            <td colspan="6">
                <span>Owner</span><br>
                <span>PATTY CAKE</span>
            </td>
            <td colspan="1">
                <span>Inspection Status</span><br>
                <span>Complete</span>
            </td>
        </tr>
    </tbody>
</table>

【讨论】:

【参考方案2】:

要在表格中固定宽度,您需要将table-layout 属性设置为fixed; 由于你混合了 % 和 px ,它不会连贯。

您可以仅设置 px 宽度,最终设置一个较小的 % 值,并让其他列使用可用的宽度。 例如:http://jsfiddle.net/M4Et8/2/

<table style='table-layout:fixed;width:100%' border='1'>
    <tr>
        <th style='width: 20%;'>Column1</th>
        <th style='width: 100px;'>Column2</th>
        <th >Column3</th>
        <th style='width: 200px;'>Column4</th>
        <th >Column5</th>
    </tr>
</table>

【讨论】:

有点晚了,但感谢您的努力,非常感谢。【参考方案3】:

您可以为table 元素设置table-layout: fixed,然后只需在相关&lt;td&gt;&lt;th&gt; 元素上设置width 属性:

table 
    table-layout: fixed;

JSFiddle Demo.

来自MDN:

table-layout CSS 属性定义了用于 布局表格单元格、行和列。

价值观:

固定: 表格和列的宽度由tablecol 元素的宽度或第一行单元格的宽度设置。后续行中的单元格不会影响列宽。

【讨论】:

这就是我喜欢 SO 的原因。非常感谢。 很好的答案。太糟糕了,Microsoft Outlook 不理解表格布局...... :( 不过 +1

以上是关于HTML 表格 - 固定和多变量列宽的主要内容,如果未能解决你的问题,请参考以下文章

固定行跨度和表格布局时的表格列宽

HTML表格列宽实践

HTML:将表格中的两列设置为比其他列宽固定像素数

具有固定列宽和最大高度的 CSS 表格

docx4j导出word文档,有表格,如何固定word表格列宽,

如何获得固定的表格列宽