[CSS] word-break、overflow-wrap(word-wrap) 及 white-space 的差別與用法

word-break

https://developer.mozilla.org/en-US/docs/Web/CSS/word-break

決定單詞的換行方式:

  • normal:預設斷行方式,英文以詞斷行,CJK (中日韓) 以字斷行。
  • break-all:任意字斷行。
  • keep-all:保留單詞,以詞斷行,CJK 句子將不會斷行,遇到空格、標點符才會。
  • break-word (不建議使用):效果與 word-break: normal 搭配 overflow-wrap: anywhere 相同,並且會忽略 overflow-wrap 的設定。

overflow-wrap (word-wrap)

https://developer.mozilla.org/en-US/docs/Web/CSS/overflow-wrap

原本 word-wrap 是微軟的私有屬性,目前標準化統稱為 overflow-wrapword-wrap 視為代稱。

此屬性決定斷詞後的結果 overflow 時的處理方式:

  • normal:斷行後 overflow 不處理。
  • break-word:斷行後 overflow,會再換行;計算最小高度時以單詞為單位。
  • anywhere:斷行後 overflow,會再換行;計算最小高度時以單字為單位。目前瀏覽器支援度有限。

延伸閱讀:CSS overflow-wrap新属性值anywhere是干嘛用的?


white-space

https://developer.mozilla.org/en-US/docs/Web/CSS/white-space

如何處理元素中的空白和斷行:

  • normal:省略開頭的空白,若句中有連續空格,將其視為一個,overflow 時自動換行。
  • nowrap:遇到 <br> 才換行,優先序比 word-wrap 更高。
  • pre:依原空白字元及排版顯示,overflow 不換行。
  • pre-wrap:保留原排版及空白字元,在 overflow 時自動換行。
  • pre-line 保留原排版,會合併多餘的空白,overflow 自動換行。
  • break-spaces:與 pre-wrap 行為相似,除了:
    • 會保留行尾空格
    • 空格會影響 min-content 及 max-content 的計算
Credit: MDN

延伸閱讀:


發佈留言