您的位置:

深入理解word-break

一、word-breaker与word-break的概念

当我们需要在浏览器中排版中文文本时,对于中文的零散排列需要进行断词处理,即当文本不足以填充一行时如何进行换行,这时我们就需要用到word-break。

简单来说,word-break可以理解为“单词打断”,即告诉浏览器如何处理单词的多余部分:当一个单词在一行放不下时,如何将单词断成两行。它有两个属性值:normal和break-all。

word-breaker是一个内置的快速断词表,将非中文文本按照空格、连字符等标点符号进行断词。而中文单词并没有空格或类空格区分,需要通过指定word-break来处理中文文本。

二、怎么使用word-break

如果你的文本中仅有英文或数字等非中文字符,可以直接对父元素设置样式来使用word-break:

.example {
  word-break: break-all; 
}

如果你的文本中存在中文,就需要在样式中指定断词规则,常用的方式有:

.example {
  word-break: keep-all;//默认值,保持全部单词不换行
}

.example {
  word-break: loose;//松散断行,以单个汉字为一个断点
}

.example {
  word-break: normal;//普通断行,以汉字为一个断点进行断词
}

.example {
  word-break: break-all;//强制断行,以每个字符为断点进行断词
}

需要注意的是,在使用中文文本时,为了保证断词能够正确进行,需要在父元素上设置文本过长时的截断方式,如:

.example {
  overflow: hidden;//超出部分隐藏
  text-overflow:ellipsis;//超出部分以省略号代替
  white-space: nowrap;//文本不换行
}

三、CSS中word-break和word-wrap的区别

一些新手常常会将word-wrap和word-break混为一谈,但实际上这两个属性有所不同:

word-wrap用于解决单词内过长导致的换行问题,通常与overflow-wrap等效,表示在单词内换行时如何打断单词,常用属性值为normal和break-word。

而word-break用于解决断词过长导致的换行问题,即当一个单词在一行放不下时如何将单词断成两行。同时,它可以直接对汉字进行处理,而word-wrap只能对单词内的非中文字符进行处理。

四、关于wordbreakers.dll

在Windows系统中,使用默认的英文键盘进行文本编辑时,默认使用的是Latin断词库。针对中文用户,Windows提供了一种名为"中文词库"的断词库wordbreakers.dll。

这个库文件在默认情况下并没有包含在Windows中,需要手动加载。同时,不同版本的Windows中包含的wordbreakers.dll也不尽相同,因此需要使用不同的安装方式进行加载。

五、wordbreakbreakall标点不受影响

在使用word-break属性时,我们常常遇到的一个问题是标点符号会被紧贴单词,突显了一些不规范的排版问题。例如,"这是一个中文,还有英文123。"按照英文打印规则,应当为"这是一个中文,还有英文 123 。"。

为了解决这个问题,我们可以对标点符号设置一个特殊的样式:

.example {
  word-break: break-all;
}
.example * {
  word-break: normal;//标点符号不受影响
}

六、小结

word-break是排版中一个非常重要的属性,可以解决一些基础的排版问题。合理地使用word-break属性不仅可以提高排版的美观程度,同时也可以减少不必要的排版工作量。同时,理解和掌握word-wrap与word-break的区别,可以更好地帮助我们理解排版中的布局方式。