by zhangxinxu from http://www.zhangxinxu.com
本文地址:http://www.zhangxinxu.com/wordpress/?p=5061
了解word-break属性
MDN上展示的语法为:
/* 关键字值 */ word-break: normal; word-break: break-all; word-break: keep-all; /* 全局值 */ word-break: inherit; word-break: initial; word-break: unset;
几个关键字值的含义如下:
-
normal
- 使用默认的换行规则。 break-all
- 允许任意非CJK(Chinese/Japanese/Korean)文本间的单词断行。(比如英语单词) keep-all
-
不允许CJK(Chinese/Japanese/Korean)文本中的单词换行,只能在半角空格或连字符处换行。非CJK文本的行为实际上和
normal
一致。(中文也不能单字换行) -
(CJK的每个字视作和英语的单词一样)
了解word-wrap属性
MDN上展示的语法为:
/* 关键字值 */ word-wrap: normal; word-wrap: break-word; /* 全局值 */ word-wrap: inherit; word-wrap: initial; word-wrap: unset;
几个关键字值的含义如下:
-
normal
- 就是大家平常见得最多的正常的换行规则。 break-word
- 一行单词中实在没有其他靠谱的换行点的时候换行。
word-wrap
属性其实也是很有故事的,之前由于和word-break
长得太像,难免会让人记不住搞混淆,晕头转向,于是在CSS3规范里,把这个属性的名称给改了,叫做:overflow-wrap
. 哎呀,这个新属性名称显然语义更准确,也更容易区别和记忆。
会发现类似下图的效果:
可以发现,word-break:break-all
正如其名字,所有的都换行。毫不留情,一点空隙都不放过。而word-wrap:break-word
则带有怜悯之心,如果这一行文字有可以换行的点,如空格,或CJK(Chinese/Japanese/Korean)(中文/日文/韩文)之类的,则就不打英文单词或字符的主意了,让这些换行点换行,至于对不对齐,好不好看,则不关心,因此,很容易出现一片一片牛皮癣一样的空白的情况。