CSS overflow-wrap新屬性值anywhere是幹嗎用的?

1、先了解下overflow-wrap屬性

CSS overflow-wrap屬性其實就是之前的word-wrap屬性,MDN如今直接把word-wrap的文檔頁跳轉到overflow-wrap屬性的文檔頁了。瀏覽器

因爲overflow-wrap屬性IE瀏覽器不支持,而其餘現代瀏覽器依然支持老的word-wrap屬性語法,所以,沒有任何理由使用overflow-wrap屬性。wordpress

直到有一天overflow-wrap屬性忽然支持了一個新的屬性值anywhereoverflow-wrap屬性就有了使用的理由了。佈局

overflow-wrap屬性的正式語法以下:spa

overflow-wrap: normal | break-word | anywherecode

2、anywhere有什麼用

在展開技術屬性值anywhere的做用以前,先給你們科普一個概念,關於「硬換行」和「軟換行」。orm

硬換行在文本的換行點處插入了實際換行符,而軟換行的文本實際上仍在同一行,但看起來它被分紅了幾行,例如word-break:break-all讓長英文單詞就屬於軟換行。rem

anywhere和break-word的異同

在正常狀態下,anywherebreak-word的表現是同樣的,即若是行中沒有其餘可接受的斷點,則能夠在任何點斷開本來不可斷開的字符串(如長單詞或URL),而且在斷點處不插入連字符。文檔

用人話解釋就是連續的英文字符若是能夠不用斷就不斷,若是實在不行,就斷開,所以相比break-all可能會留白。以下圖所示:字符串

留白示意

具體可參見這篇文章:「word-break:break-all和word-wrap:break-word的區別」。get

下面講下不一樣支持,anywherebreak-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-wordword-break:break-all聲明的混合體,主要用在彈性佈局中,即元素尺寸足夠的時候單詞儘可能完成顯示,不隨便中斷,若是尺寸不夠,那就能斷則斷。

3、兼容性和結語

overflow-wrap:anywhere聲明目前兼容性還不算樂觀,目前(2020年3月)Safari瀏覽器還不支持,Chrome瀏覽器也是剛剛支持,具體信息參見表:

的兼容性(數據源自MDN)

Internet Explorer logo
IE

Edge logo
Edge

Firefox logo
Firefox

Chrome logo
Chrome

Safari logo
Safari

Safari logo
iOS
Safari

Android Browser logo
Android
Browser

65+ ✔

80+ ✔

13+ ✘

13.3+ ✘

80+ ✔

所以目前還不適合在實際項目中使用,你們瞭解便可。

並且,常規的文字排版你們也不會用到這個屬性,就算知道這個屬性值,也不會想到使用。

註定是一個往後被人遺忘的CSS特性。

就說這麼多,帶你們簡單瞭解一個新特性。

相關文章
相關標籤/搜索