0

我试图包装一个长词。我看过这篇文章:如何防止长词破坏我的 div?

它在这样的简单情况下效果很好:

.wrapWords
{
    white-space: pre;           /* CSS 2.0 */
    white-space: pre-wrap;      /* CSS 2.1 */
    white-space: pre-line;      /* CSS 3.0 */
    white-space: -pre-wrap;     /* Opera 4-6 */
    white-space: -o-pre-wrap;   /* Opera 7 */
    white-space: -moz-pre-wrap; /* Mozilla */
    white-space: -hp-pre-wrap;  /* HP Printers */
    word-wrap: break-word;      /* IE 5+ */

}

<!-- This wraps correctly -->
<div style="width:145px;">
    <div class="wrapWords" style="width:100%;">
        <a href="#">AAAAAAAAAAAAAAAAAA</a>
    </div>
<div>

但我的案例有两个这样的嵌套表:

<!-- This doesn't work -->
<table style="width:100%;">
    <tr>
        <td style="width:145px;">
            <table style="width:100%;">
                <tr>
                    <td style="width:100%;">
                        <div class="wrapWords" style="width:100%;">
                            <a href="#">BBBBBBBBBBBBBBBBBB</a>
                        </div>
                    </td>
                    <td>
                    </td>
                </tr>
            </table>
        </td>
        <td>
        </td>
    </tr>
</table>

您可以在这里测试此代码http://jsfiddle.net/ZmnQ6/4/

4

3 回答 3

4

表格table-layout: auto;默认采用,因此随着内容的增加,宽度也会增加,因此您需要将表格布局设置为固定。

table{
    table-layout: fixed;
}

演示

于 2013-10-23T09:03:19.230 回答
0

我想这就是你要找的。

工作演示

的HTML:

<!-- This wraps correctly -->
<div style="width:145px;">
    <div class="wrapWords" style="width:100%;">
        <a href="#">AAAAAAAAAAAAAAAAAA</a>
    </div>
<div>

<!-- This doesn't work -->
<table style="width:100%;">
    <tr>
        <td style="width:145px;">
            <table style="width:100%;">
                <tr>
                    <td style="width:130px;">
                        <div class="wrapWords" style="width:inherit; display:inline-block;">
                            <a href="#">BBBBBBBBBBBBBBBBBB</a>
                        </div>
                    </td>
                    <td>
                    </td>
                </tr>
            </table>
        </td>
        <td>
        </td>
    </tr>
</table>

逻辑:

divtd有不同的display特点。您需要使您的divwhich 嵌套在 中td以将其更改display为,例如,此处inline-block使用一个 fixedwidth来实现您正在寻找的内容。

希望这可以帮助。

于 2013-10-23T09:04:54.533 回答
0

表格布局有两种完全不同的算法:有或没有table-layout: fixed

前者将使单元格的宽度适应作者的意愿
后者将使单元格的宽度适应内容(单元格中内容的相对数量/宽度/任何内容)

于 2013-10-23T09:03:40.033 回答