该属性决定文本内容超出容器时,浏览器是否自动插入换行符。css
属性值:浏览器
该属性决定浏览器是否应该在一个没法正常断开的单词内部插入换行符。spa
属性值:code
该属性决定浏览器如何处理空白和换行符。orm
属性值:it
对这3个属性的关系,个人理解以下:class
首先,white-space决定了浏览器如何渲染换行符,若是它选择无视换行符,那么另外两个属性指导浏览器自动插入的换行符都无效;而它本身插入的换行符不受影响。容器
其次,word-break优先于word-wrap,由于浏览器首先会把单词视为一个总体。举个例子:渲染
word-break值为normal或keep-all时,可能会有超长的单词溢出容器。此时 word-wrap:break-word 会处理这种状况,将该单词从中间截断,浏览器最终表现出来的效果是break-word。select
而若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; }