css - 在 HTML 表格中 *如果需要* 在单词内中断

标签 css html-table

我有一个固定宽度的表格(具有可变宽度的列)。如果用户输入没有空格的长条目,表格会水平扩展并且布局会中断。

我可以使用 word-break: break-all 来解决这个问题,但这会在单词中间断行,即使有合适的空格。据推测,这可以通过 word-wrap: break-word 修复,但不幸的是,it doesn't work as expected in tables .

这是一个使用 word-break: break-allword-wrap: break-word 的例子:

<table style="width: 200px; border: 1px solid black;">
    <tr>
        <td style="word-wrap: break-word">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor 
            incididunt ut labore et dolore magna aliqua.

            aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        </td>
        <td>1234</td>
    </tr>
</table>

<table style="width: 200px; border: 1px solid black;">
    <tr>
        <td style="word-break: break-all">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor 
            incididunt ut labore et dolore magna aliqua.

            aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
        </td>
        <td>1234</td>
    </tr>
</table>

这是我想要的样子:

+-----------------------------------+
| Lorem ipsum dolor sit amet,       |
| consectetur adipiscing elit,      |
| sed do eiusmod tempor             |
| incididunt ut labore et           |
| dolore magna aliqua.         1234 |
| aaaaaaaaaaaaaaaaaaaaaaaaaaaa      |
| aaaaaaaaaaaaaaaaaaaaaaaaaaaa      |
| aaaaaaaaaaaaaaaaaaaaaa            |
+-----------------------------------+

即单词内的换行符当且仅当不可能自然地断开它。

我知道 table-layout: fixed 会使表格与 word-wrap: break-word 一起工作,但这样列就不再是可变宽度的了.我想继续使用 table 而不是 div,因为数据本身本质上是表格。

有没有办法在 CSS 中做到这一点?

最佳答案

不是 CSS,但你可以使用 <wbr> 指定中断单词的位置(仅在必要时)。

<table style="width: 200px; border: 1px solid black;">
    <tr>
        <td>
            Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor 
            incididunt ut labore et dolore magna aliqua.

            aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<wbr>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa<wbr>aaaaaaaaaaaaaaaaaa
        </td>
        <td>1234</td>
    </tr>
</table>

关于css - 在 HTML 表格中 *如果需要* 在单词内中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47040480/

相关文章:

javascript - 隐藏点击表上的行

php5分页当前页

html - 链接的可点击区域

html - 当浏览器变小时,如何将右栏 float 到左栏的中间

jquery - 如何将表格行中的文本居中,使其始终位于屏幕可见区域的中心

javascript - 在 Javascript 中动态添加新表行

css - 在透明背景上制作不透明文本渐变

html - 如何在一行中水平对齐 css/html 中的按钮?

html - 配置 CSS 时出错

javascript - html 表未设置。对齐问题