“word-break: break-all”和“word-wrap: break-word”的区别是什么?

当我两个都用的时候,如果它不适合容器,它们似乎就会破坏单词。但是为什么W3C制定了两种方法来实现呢?


当前回答

至少在Firefox (v24版本)和Chrome (v30版本)中,当应用到表元素中的内容时:

自动换行:break-word

实际上不会导致长单词换行,这会导致表超出其容器的边界;

单词分割:打破所有

将导致文字的包装,和表适合在其容器内。

jsfiddle演示。

其他回答

Word-wrap: break-word最近更改为overflow-wrap: break-word

将长词换行到下一行。 调整不同的单词,使它们不会在中间断裂。

单词分割:打破所有

不管它是一个连续的单词还是许多单词,都在宽度限制的边缘将它们分开。(即即使是在同一个单词的字符内)

因此,如果您有许多固定大小的跨度,可以动态获取内容,您可能只喜欢使用换行:断字,因为这样只有连续的单词在中间被打断,如果它是一个包含许多单词的句子,则调整空格以获得完整的单词(单词中没有中断)。

如果无所谓的话,随便选一个。

我只能查到这些。我不确定它是否有帮助,但我想我应该把它加入到混合中。

自动换行

此属性指定如果内容超出了元素的指定呈现框的边界,当前呈现的行是否应该中断(这在某些方面类似于' clip '和' overflow '属性的意图)。此属性仅适用于以下情况:元素具有可视渲染,是具有显式高度/宽度的内联元素,是绝对定位的元素和/或是块元素。

单词分割

此属性控制单词中的换行行为。在一个元素中使用多种语言的情况下,它特别有用。

除了前面的注释之外,浏览器对换行的支持似乎比换行好一些。

这是一个巨大的区别。break-word只会破坏不符合容器的单词。而break-all会无情地试图最大限度地增加每行字符的数量,并会无情地导致“不必要的断句”,这看起来很可怕。

例子

这是一个来自旧杂志的文本,在一个6个字符宽的容器中使用单行字体。

使用word-break: break-all,大多数单词都被打破了,看起来无法阅读:

This i
s a te
xt fro
m an o
ld mag
azine

break-all所做的是一行一行地进行,在每行上放入六个字符,直到没有剩余。它会无情地这样做,即使是像“is”这样的两个字母的单词也可以分成两行。这看起来非常糟糕,我永远不会用它来渲染文本。

使用word-wrap: break-word,只有长单词会被打断:

This
is a
text
from
an old
magazi
ne

break-word的功能要好得多。它只会破坏无法装下容器宽度的单词。不能放入当前行的单词会被推到下一行。因此,在这种情况下,对于每行容纳6个字符的容器,它必须断开 一个8个字符的单词,比如“magazine”,但它永远不会变成一个更短的单词,比如“text”。

< span style="width: 10px;边框:纯黑色1px;字体类型:等宽字体;" > <h1 style=" font - family:宋体;"这是一本旧杂志上的一段文字 <人力资源> <h1 style=" font - family:宋体;"这是一本旧杂志上的一段文字 < / div

至少在Firefox (v24版本)和Chrome (v30版本)中,当应用到表元素中的内容时:

自动换行:break-word

实际上不会导致长单词换行,这会导致表超出其容器的边界;

单词分割:打破所有

将导致文字的包装,和表适合在其容器内。

jsfiddle演示。