Проблема с
<td style="word-break:break-all;">longtextwithoutspace</td>
заключается в том, что он будет работать не очень хорошо, когда текст имеет несколько пробелов, например,
<td style="word-break:break-all;">long text with andthenlongerwithoutspaces</td>
Если слово andthenlongerwithoutspaces
вписывается в ячейку таблицы в одну строку, а long text with andthenlongerwithoutspaces
- нет, длинное слово будет разбито на две, вместо переноса.
Альтернативное решение: вставить U + 200B ( ZWSP ), U + 00AD ( мягкий дефис )
или U + 200C ( ZWNJ ) в каждом длинном слове после каждого, скажем, 20-го символа (однако, см. предупреждение ниже):
td {
border: 1px solid;
}
<table style="width: 100%;">
<tr>
<td>
<div style="word-wrap: break-word;">
Looooooooooooooooooo­oooooooooooooooooooo­oooooooooooooooooooo­oooooooooooooooooooo­oooooooooooooooooooo­oooooooooooooooooooo­oooooooooooooooooooo­oooooooooooooooooooo­oooooooooooooooooooo­oooooooooooooong word
</div>
</td>
<td><span style="display: inline;">Short word</span></td>
</tr>
</table>
Предупреждение : вставка дополнительных символов нулевой длины не влияет на чтение. Однако это влияет на текст, скопированный в буфер обмена (эти символы, конечно, также копируются). Если текст буфера обмена позже используется в какой-либо функции поиска в веб-приложении ... поиск будет прерван. Хотя это решение можно увидеть в некоторых известных веб-приложениях, по возможности избегайте его.
Предупреждение : при вставке дополнительных символов не следует разделять несколько кодовых точек внутри графемы. См. https://unicode.org/reports/tr29/#Grapheme_Cluster_Boundaries для получения дополнительной информации.