云端漂移 2020-02-20
该属性决定文本内容超出容器时,浏览器是否自动插入换行符。
属性值:
该属性决定浏览器是否应该在一个无法正常断开的单词内部插入换行符。
属性值:
该属性决定浏览器如何处理空白和换行符。
属性值:
对这3个属性的关系,我的理解如下:
首先,white-space决定了浏览器如何渲染换行符,如果它选择无视换行符,那么另外两个属性指导浏览器自动插入的换行符都无效;而它自己插入的换行符不受影响。
其次,word-break优先于word-wrap,因为浏览器首先会把单词视为一个整体。举个例子:
word-break值为normal或keep-all时,可能会有超长的单词溢出容器。此时 word-wrap:break-word 会处理这种情况,将该单词从中间截断,浏览器最终表现出来的效果是break-word。
而若word-break值改成了break-all,那么超长的单词会被强制截断,此时word-wrap就没有用武之地了。浏览器最终表现出来的效果是break-all。
(PS:如果同时设了break-all和break-word,那么一长串标点符号不会换行,原因不详。。。为了长串标点能正常换行,建议只使用break-word)
因此,如果需求是这样的(一般是UGC文本的展示):
1. 换行符、空白都原样显示
2. 文本正常换行,不能溢出容器
那么需要设置的属性组合为:
.text { white-space: pre-wrap; word-wrap: break-word; }