3

这些似乎做同样的事情,有什么区别? https://jsfiddle.net/pmuub8w1/2/

    p{
          word-break:normal;
   }

   p{
         word-break: keep-all;
    }
4

2 回答 2

1
  1. normal:遵循正常的换行规则,即在单词之间的空格处换行。因此,即使最后一个单词超出了容器的范围,句子也不会进入下一行,直到下一个单词出现。这将适用于所有文本,即使是CJK 字符(中文、日文、韩文和衍生品)
  2. break-all:如果超出范围,则在字符处中断,这意味着一个单词本身将被中断并带到第二行。因此,假设在thenALongWord超出范围将使其余部分进入第二行。这不会对角色进行。ALbreak-allongWordCJK
  3. keep-all:打破常规行规则,CJK 字符除外。就像normal除非CJK它根本不会中断(既不是按行规则完成的,normal也不是按字符完成的break-all

以下是Mozzila 文档中示例的屏幕截图。 断字

请注意处理非 CJK 和 CJK 句子的方式之间的区别。

于 2017-06-25T01:08:58.100 回答
0

另一个答案是正确的重要部分:对于非 CJK 文本也是如此normalkeep-all但是,对 CJK 文本行为方式的描述是错误的。

在中,CJK 可以在任何地方normal断行。这是因为 CJK 通常不带空格使用,并且可以接受任何地方的中断(如果不完美的话)。在屏幕截图中,是一个单词,但在最后一行的开头被分成两半。本当

break-all中,非 CJK 文本可以在任何地方断开,与 中的 CJK 文本相同normal

keep-all中,CJK 文本的工作方式与其他脚本中的文本工作方式相同normal- 也就是说,如果有一长行没有任何空格,它可能会溢出容器。如果要换行 CJK 文本,则必须手动插入空格。当与零宽度空格结合在自然单词边界处创建换行符时,这可能很有用。截图中,因为日文没有空格,所以和英文的长词一样处理,溢出容器。

于 2017-06-30T04:29:05.823 回答