word wrap java主控臺_搞懂word-break、word-wrap、white-space

雖然不是專門搞CSS的,但是遇到了還是記一下,不能因為一點點問題就去找人幫助。所以特別紀錄這三個標籤的用法white-space、word-break、word-wrap(overflow-wrap)

測試程式碼

(文末有本文中所有範例的程式碼)

下面是本文中用於測試三個樣式屬性展現情況的html程式碼:

Hi ,

This is a incomprehensibilities long word.

你好 ,

這 是一個不可思議的長單詞

複製程式碼

現在只給了它一個寬度和邊框,沒有其它任何樣式,下面是它目前的展現情況:

format,png

可以看到,nbsp;和可以正常發揮作用,而連續的空白會被縮減成一個(例如This和is之間的三個空白變成了一個),換行符也全都無效。句子超過一行後會自動換行,而長度超過一行的單個單詞會超出邊界。

接下來我們看下, 給它上面三個css屬性賦值後會出現什麼變化。

white-space

正如它的名字,這個屬性是用來控制空白字元的顯示的,同時還能控制是否自動換行。它有五個值:normal | nowrap | pre | pre-wrap | pre-line。因為預設是normal,所以我們主要研究下其它四種值時的展現情況。

(為了方便比較,下文所有圖,左側為normal即初始情況,右側為賦上相應值時的情況)

先看下white-space:nowrap時的情況:

format,png

不僅空白被合併,換行符無效,連原本的自動換行都沒了!衹有才能導致換行!所以這個值的表現還是挺簡單的,我們可以理解為永不換行。

white-space:pre:

format,png

空白和換行符全都被保留了下來!不過自動換行還是沒了。保留,所以pre其實是preserve的縮寫,這樣就好記了。

white-space:pre-wrap:

format,png

顯然pre-wrap就是preserve+wrap,保留空白和換行符,且可以自動換行。

white-space:pre-line:

format,png

空白被合併了,但是換行符可以發揮作用,line應該是new line的意思,自動換行還在,所以pre-line其實是preserve+new line+wrap。

我整理了一個表予以總結:

是否能發揮作用

換行符

空白

自動換行

、nbsp;

normal

×

×(合併)

nowrap

×

×(合併)

×

pre

×

pre-wrap

pre-line

×(合併)

word-break

從這個名字可以知道,這個屬性是控制單詞如何被拆解換行的。它有三個值:normal | break-all | keep-all。

word-break:keep-all:

format,png

所有「單詞」一律不拆解換行,注意,我這裡的「單詞」包括連續的中文字元(還有日文、韓文等),或者可以理解為衹有空白可以觸發自動換行

word-break:break-all:

format,png

所有單詞碰到邊界一律拆解換行,不管你是incomprehensibilities這樣一行都顯示不下的單詞,還是long這樣很短的單詞,只要碰到邊界,都會被強制拆解換行。所以用word-break:break-all時要慎重呀。

這樣的效果好像並不太好呀,能不能就把incomprehensibilities拆一下,其它的單詞不拆呢?那就需要下面這個屬性了:

word-wrap(overflow-wrap)

word-wrap又叫做overflow-wrap:

word-wrap 屬性原本屬於微軟的一個私有屬性,在 CSS3 現在的文字規範草案中已經被重名為 overflow-wrap 。 word-wrap 現在被當作 overflow-wrap 的 「別名」。 穩定的谷歌 Chrome 和 Opera 瀏覽器版本支援這種新語法。

這個屬性也是控制單詞如何被拆解換行的,實際上是作為word-break的互補,它衹有兩個值:normal | break-word,那我們看下break-word:

format,png

終於達到了上文我們希望的效果,衹有當一個單詞一整行都顯示不下時,才會拆解換行該單詞。

所以我覺得overflow-wrap更好理解好記一些,overflow,衹有長到溢位的單詞才會被強制拆解換行!

(其實前面的word-break屬性除了列出的那三個值外,也有個break-word值,效果跟這裡的word-wrap:break-word一樣,然而衹有Chrome、Safari等部分瀏覽器支援)

總結

最後總結一下三個屬性

white-space,控制空白字元的顯示,同時還能控制是否自動換行。它有五個值:normal | nowrap | pre | pre-wrap | pre-line

word-break,控制單詞如何被拆解換行。它有三個值:normal | break-all | keep-all

word-wrap(overflow-wrap)控制長度超過一行的單詞是否被拆解換行,是word-break的補充,它有兩個值:normal | break-word

相信讀完了本文,你應該對white-space、word-break、word-wrap有比較系統的認識了吧,如果短時間還是記不住,收藏一下常看看就能記住的XD~如果你喜歡這篇文章的話,希望能點個贊~

大神寫的就是不一樣,儲存到自己這裡才放心