如何模仿断词:break-word;适用于 IE9、IE11 和 Firefox

Posted

技术标签:

【中文标题】如何模仿断词:break-word;适用于 IE9、IE11 和 Firefox【英文标题】:How to mimic word-break: break-word; for IE9, IE11 and Firefox 【发布时间】:2016-04-04 14:07:22 【问题描述】:

如何在 IE9、IE11 和 Firefox 中模拟 word-break: break-word;

它似乎在 Chrome 中工作。我已经了解并理解它是非标准的,仅限 webkit。

仅供参考,我尝试过使用,

white-space: pre-wrap;

还有一些类似,

   overflow-wrap: break-word;

还尝试了下面提到的 CSS,

 word-wrap:  break-word;
 word-break: break-word;

但这些似乎不起作用。

我无法通过明确地将其设为display: block; 来为跨度(包含文本)提供固定宽度,因为文本是动态的并且会根据用户的地理位置而有所不同。目前我们支持大约 18 种语言。

这就是代码的样子,

html

<div id="grid2">
     <span id="theSpan">Product Support</span>
</div>

CSS,

#theSpan
   white-space: pre-wrap;      /* CSS3 */   
   white-space: -moz-pre-wrap; /* Firefox */    
   white-space: -pre-wrap;     /* Opera 7 */   
   white-space: -o-pre-wrap;   /* Opera 7 */    
   word-wrap: break-word;      /* IE */
   word-break: break-all;


#grid2
   width: 100px;

看起来像这样,

我希望它像,

请注意: 对于某些语言,我不得不使用word-break: break-all;,翻译文本太长并且溢出网格。文本“产品支持”是动态的。

更新: 我对 id 为 grid2 的 div 有一个固定的宽度。在其中一种语言中,翻译后的文本太长,是一个单词,并且从 grid2 div 中流出。

也更新了代码。

【问题讨论】:

你能添加一个简单的现场演示吗?因为我认为不需要为上面的当前示例设置任何分词规则。 @Pangloss 是的,对于这个特定的网格,我知道它不是必需的,但是当我在其中一个网格中有一个长单词时出现问题,其中跨度中的文本溢出了 div。谢谢你的建议。将添加演示并尽快通知您。 【参考方案1】:

使用display:table-caption 来实现您正在寻找的东西。

LIVE DEMO

HTML:

<div id="grid2">
     <span id="theSpan">Product Support</span>
</div>

CSS:

#theSpan
  display:table-caption;

希望这会有所帮助。

【讨论】:

嘿,忘了提一件事,我为 id 为grid2 的 div 设置了固定宽度。在其中一种语言中,翻译的文本太长,它是一个单词,它从 grid2 div 中流出。我也会更新问题。谢谢你的回答。 根据您的问题,我上面的答案将类似于您正在寻找的break-word 效果。即使你有一个固定的宽度,字符也会像你想要的那样被破坏。 我了解,如果文本是单个单词并且对于其中一种语言来说太长,则会出现问题。在这种情况下,由于 div 的固定宽度,span 中的文本会流出 div。 是的。我同意你的观点,但如果我输入word-break: break-word;,它在 Chrome 上可以完美运行。如,如果网格中有两个单词,它会正确损坏,如问题中的第二张图片所示。此外,从 div 溢出的较长文本也没有问题。因此标题为“如何模仿断词:断词;适用于 IE9、IE11 和 Firefox”:) 嘿,使用 div 而不是 span 来保存文本怎么样?想知道这是否有帮助。我会试试的。 如果我有word-break: break-word;,即使是很长的单字文本,它也能正常工作。有趣!【参考方案2】:

我在 Chrome、Firefox 和 IE 中仅使用以下工具就取得了很好的成功:

word-break: break-word;
word-wrap: break-word;

在我的问题案例中,我已经在使用:

display: table-cell;

我最终不得不包括

max-width: 440px;

在所有浏览器中进行包装。在大多数情况下,最大宽度不是必需的。

【讨论】:

分词:断词;仅适用于眨眼/webkit,所以对我来说在 IE11 中不起作用【参考方案3】:
#grid2
    white-space: pre-wrap;
    word-wrap: break-word;

这应该适用于 IE11,但不适用于 IE9

【讨论】:

以上是关于如何模仿断词:break-word;适用于 IE9、IE11 和 Firefox的主要内容,如果未能解决你的问题,请参考以下文章

在表中使用“自动换行:断词”[重复]

word-wrap:break-word 不适用于 iText 2.1.7

Angular JS 不适用于 IE9,但适用于其他浏览器

Class:hover 适用于 Firefox,但不适用于 Chrome 和 IE9

jQuery背景按钮动画适用于Chrome和IE8,但不适用于Firefox或IE9 [重复]

gwt 2.4.0仅适用于IE的空白页