該屬性決定文本內容超出容器時,瀏覽器是否自動插入換行符。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; }