CSS - 保持表格单元格不会扩展和截断长文本

时间:2012-03-15 18:25:20

标签: html css

有人可以告诉我为什么这不是截断文字?最后一个细胞不断增长。我不希望细胞增长超过允许的百分比。

<HTML>
    <TABLE id=section1 width="100%">
        <TBODY>
            <TR style="TEXT-OVERFLOW: ellipsis; DISPLAY: table-cell; WHITE-SPACE: nowrap; FONT-SIZE: 12px; OVERFLOW: hidden;">
                <TD style="WIDTH: 8%;  TEXT-OVERFLOW: ellipsis; DISPLAY: table-cell; WHITE-SPACE: nowrap; FONT-SIZE: 12px; OVERFLOW: hidden;">COL A</TD>
                <TD style="WIDTH: 18%; TEXT-OVERFLOW: ellipsis; DISPLAY: table-cell; WHITE-SPACE: nowrap; FONT-SIZE: 12px; OVERFLOW: hidden;">COL B</TD>
                <TD style="WIDTH: 22%; TEXT-OVERFLOW: ellipsis; DISPLAY: table-cell; WHITE-SPACE: nowrap; FONT-SIZE: 12px; OVERFLOW: hidden;">COL C</TD>
                <TD style="WIDTH: 14%; TEXT-OVERFLOW: ellipsis; DISPLAY: table-cell; WHITE-SPACE: nowrap; FONT-SIZE: 12px; OVERFLOW: hidden;">COL D</TD>
                <TD style="WIDTH: 12%; TEXT-OVERFLOW: ellipsis; DISPLAY: table-cell; WHITE-SPACE: nowrap; FONT-SIZE: 12px; OVERFLOW: hidden;">COL E</TD>
                <TD style="WIDTH: 10%; TEXT-OVERFLOW: ellipsis; DISPLAY: table-cell; WHITE-SPACE: nowrap; FONT-SIZE: 12px; OVERFLOW: hidden;">COL F</TD>
                <TD style="WIDTH: 12%; TEXT-OVERFLOW: ellipsis; DISPLAY: table-cell; WHITE-SPACE: nowrap; FONT-SIZE: 12px; OVERFLOW: hidden;">COL G</TD>
                <TD style="WIDTH: 4%;  TEXT-OVERFLOW: ellipsis; DISPLAY: table-cell; WHITE-SPACE: nowrap; FONT-SIZE: 12px; OVERFLOW: hidden;">LOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONG</TD>
            </TR>
        </TBODY>
    </TABLE>
</HTML>

这是demo on jsFiddle

3 个答案:

答案 0 :(得分:10)

word-wrap: break-word添加到您的手机样式..

虽然你应该真的避免使用内联样式并为单元格声明一个类..

更新

jsfiddle

答案 1 :(得分:7)

为了正确起见,我更新了@redDevil建议的解决方案,以坚持现代网络标准

标记

<table>
    <tbody>
        <tr>
            <td class="a">COL A</td>
            <td class="a">COL B</td>
            <td class="a">COL C</td>
            <td class="a">COL D</td>
            <td class="a">COL E</td>
            <td class="a">COL F</td>
            <td class="a">COL G</td>
            <td class="b">LOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOONG</td>
        </tr>
    </tbody>
</table>

样式

table {
    width: 100%;
    table-layout: fixed;
}
td {
    border: 1px solid #35f;
    overflow: hidden;
    text-overflow: ellipsis;
}
td.a {
    width: 13%;
    white-space: nowrap;
}
td.b {
    width: 9%;
    word-wrap: break-word;
}

这是jsFiddle上的demo

请注意

  1. 解决方案的很大一部分是在表元素上设置table-layout: fixed;
  2. 另一部分 - 您知道吗 - 正在为长单元格提供word-wrap: break-word;,并删除overflow: hidden;规则。

答案 2 :(得分:0)

我相信你需要一个display:block元素才能使溢出正常工作。

如果您需要使用表格,最简单的方法是在每个元素中添加一个样式。

我将发布一个我正在谈论的例子。