CSS overflow-wrap
屬性其實就是之前的word-wrap
屬性,MDN如今直接把word-wrap
的文檔頁跳轉到overflow-wrap
屬性的文檔頁了。瀏覽器
因爲overflow-wrap
屬性IE瀏覽器不支持,而其餘現代瀏覽器依然支持老的word-wrap
屬性語法,所以,沒有任何理由使用overflow-wrap
屬性。wordpress
直到有一天overflow-wrap
屬性忽然支持了一個新的屬性值anywhere
,overflow-wrap
屬性就有了使用的理由了。佈局
overflow-wrap
屬性的正式語法以下:spa
overflow-wrap: normal | break-word | anywherecode
在展開技術屬性值anywhere
的做用以前,先給你們科普一個概念,關於「硬換行」和「軟換行」。orm
硬換行在文本的換行點處插入了實際換行符,而軟換行的文本實際上仍在同一行,但看起來它被分紅了幾行,例如word-break:break-all
讓長英文單詞就屬於軟換行。rem
在正常狀態下,anywhere
和break-word
的表現是同樣的,即若是行中沒有其餘可接受的斷點,則能夠在任何點斷開本來不可斷開的字符串(如長單詞或URL),而且在斷點處不插入連字符。文檔
用人話解釋就是連續的英文字符若是能夠不用斷就不斷,若是實在不行,就斷開,所以相比break-all可能會留白。以下圖所示:字符串
具體可參見這篇文章:「word-break:break-all和word-wrap:break-word的區別」。get
下面講下不一樣支持,anywhere
和break-word
的不一樣之處在於,在overflow-wrap:anywhere
計算最小內容尺寸的時候會考慮軟換行,而overflow-wrap:break-word
不會考慮軟換行。
例以下面這個例子:
<p class="anywhere">I'm zhangxinxu.</p>
<p class="break-word">I'm zhangxinxu.</p>
p {
display: inline-block; width: min-content; padding: 10px; border: solid deepskyblue; vertical-align: top;
}
.anywhere {
overflow-wrap: anywhere;
}
.break-word {
overflow-wrap: break-word;
}
結果在Chrome瀏覽器下的效果就像下圖這樣:
能夠看到,應用了overflow-wrap:anywhere
聲明的元素的最小寬度是把每個英文單詞都破開後的寬度,而應用了overflow-wrap:break-word
聲明的元素仍是按照默認的最小寬度規則進行計算。
有此可見,overflow-wrap:anywhere
就像是overflow-wrap:break-word
和word-break:break-all
聲明的混合體,主要用在彈性佈局中,即元素尺寸足夠的時候單詞儘可能完成顯示,不隨便中斷,若是尺寸不夠,那就能斷則斷。
overflow-wrap:anywhere
聲明目前兼容性還不算樂觀,目前(2020年3月)Safari瀏覽器還不支持,Chrome瀏覽器也是剛剛支持,具體信息參見表:
的兼容性(數據源自MDN)
IE
Edge
Firefox
Chrome
Safari
iOS
Safari
Android
Browser
✘
✘
65+ ✔
80+ ✔
13+ ✘
13.3+ ✘
80+ ✔
所以目前還不適合在實際項目中使用,你們瞭解便可。
並且,常規的文字排版你們也不會用到這個屬性,就算知道這個屬性值,也不會想到使用。
註定是一個往後被人遺忘的CSS特性。
就說這麼多,帶你們簡單瞭解一個新特性。