小编典典

如何防止长词破坏我的div?

html

从TABLE布局切换到DIV布局以来,一个普遍的问题仍然存在:

问题 :您用动态文本填充DIV,并且不可避免地会有一个超长单词延伸到div列的边缘,使您的网站看起来不专业。

复古 :这 从未 发生过表布局。一个表格单元格总是可以很好地扩展到最长单词的宽度。

严重性 :我什至在大多数主要站点上都 遇到了 这个问题,尤其是在德国站点上,这些站点甚至连“限速”之类的通用词都非常长(“
Geschwindigkeitsbegrenzung”)。

有人对此有可行的解决方案吗?


阅读 269

收藏
2020-05-10

共1个答案

小编典典

软连字符

您可以通过插入软连字符(­)来告诉浏览器在哪里拆分长字:

averyvery­longword

可能呈现为

veryverylongword

要么

每个

一个好的正则表达式可以确保除非必要,否则您不会插入它们:

/([^\s-]{5})([^\s-]{5})/ → $1­$2

浏览器和搜索引擎足够聪明,可以在搜索文本时忽略该字符,而Chrome和Firefox(尚未测试其他字符)在将文本复制到剪贴板时会忽略该字符。

<wbr> 元件

另一个选择是注入<wbr>,它是以前的IE-ism,现在是HTML5:

averyvery<wbr>longword

无连字符:

每个
长字

您可以使用零宽度的空格字符&#8203;(或&#x200B)来实现相同的目的。


仅供参考,最新的IE,Firefox和Safari(但当前不支持Chrome)也支持CSShyphens:auto

div.breaking {
  hyphens: auto;
}

但是,连字基于连字字典,因此不能保证打破长字。但是,它可以使有道理的文本更漂亮。

复古抱怨解决方案

<table>布局不好,但display:table在其他元素上很好。它会像老式桌子一样古怪(又富有弹性):

div.breaking {
   display: table-cell;
}

overflowwhite-space: pre-wrap下面的答案也很好。

2020-05-10