深入理解 CSS 文本換行: overflow-wrap 和 word-break

前言

正常情況下,在固定寬度的盒子中的中文會自動換行。但是,當遇到非常長的英文單詞或者很長的 URL 時,文本可能就不會自動換行,而會溢出所在容器。幸運的是,CSS 為我們提供了一些和文本換行相關的屬性;今天來研究一下 CSS 中的文本換行。

  • overflow-wrap

  • word-break

  • white-space

  • line-break

  • hyphens

本篇文章重點講述前兩種方式 overflow-wrapword-break

1. overflow-wrap

overflow-wrap? 用來說明當一個不能被分開的字符串太長而不能填充其包裹盒時,為防止其溢出,瀏覽器是否允許這樣的單詞中斷換行。其屬性值有以下三種:

overflow-wrap:?normal;
overflow-wrap:?anywhere;
overflow-wrap:?break-word;

(1)normal

屬性值為 normal 將使瀏覽器使用系統的默認換行行為。因此,對于英語和其他相關書寫系統,換行符將出現在空格和連字符處。

fileOf7298.png

從圖中可以看出,段落中有一個很長的單詞溢出了容器,這是系統的默認換行行為。

(2)anywhere

使用值 anywhere 將在字符串之間的任意點來進行中斷,僅當在其行上顯示單詞會導致溢出時,瀏覽器才會中斷該單詞。如果單詞放在其行上時仍然溢出,它將在發生溢出的點處中斷該單詞。

fileOf7298.png

可以看到,使用 ?overflow-wrap:anywhere? 將溢出的單詞分解成文本塊,這樣就可以將其放入容器中。這里文本所在的容器寬度是固定的。

該屬性會影響其所在元素的 ?min-content? 屬性大小計算。當width設置為min-content時很容易看出來:

.break-word?{width:?min-content;overflow-wrap:?break-word;
}.anywhere?{width:?min-content;overflow-wrap:?anywhere;
}

效果如下:

fileOf7298.png

可以看到,帶有overflow-wrap:break-word?的元素計算出的 ?min-content? 就像單詞沒有被破壞一樣,因此它的寬度變成了最長單詞的寬度。而帶有 ?overflow-wrap:anywhere? 的元素,由于在任何地方都可能發生中斷,因此 ?min-content? 最終成為單個字符的寬度。

注意,這種行為只有為文本所在容器的寬度設置為min-content時才會發揮作用,如果寬度設置為固定的值,那么anywhere? 和 ?break-word? 的表現是一致的。

另外需要注意,目前有些瀏覽器不支持該屬性:

fileOf7298.png

(3)break-word

break-word? 屬性表示如果行內沒有多余的地方容納該單詞到結尾,則那些正常的不能被分割的單詞會被強制分割換行。

fileOf7298.png

可以看到,文本在長單詞的某個地方自動換行了。如果文本所在容器設置了固定的寬度,就會在長單詞溢出的地方換行。

(4)瀏覽器兼容性

overflow-wrap? 屬性就是原來的word-wrapword-wrap最初是一個沒有前綴的 Microsoft 擴展。它不是 CSS 標準的一部分,盡管大多數瀏覽器都使用 word-wrap 這個名稱來實現它。根據 CSS3 規范草案,瀏覽器應將word-wrap視為overflow-wrap屬性的遺留名稱別名,以確保兼容性。

fileOf7298.png

2. word-break

word-break 屬性用于指定怎樣在單詞內進行斷行。我們可以使用該屬性在內容發生溢出的確切位置拆分單詞并將其換行到下一行。下面是 ?word-break的屬性值:

word-break:?normal;
word-break:?break-all;
word-break:?keep-all;
word-break:?break-word;

需要注意,break-word 屬性值已經被棄用,但是由于遺留原因,瀏覽器仍然支持它。指定該屬性與同時使用word-break: normal? 和 ?overflow-wrap: anywhere?? 的效果是一樣的。

下面就來看看前三個屬性:

(1)normal

將 ?word-break? 屬性的值設置為 ?normal? 將應用默認的斷行規則:

fileOf7298.png

可以看到,設置為 ?normal? 時,和不設置word-break時的效果是一樣的,這就是瀏覽器默認的斷行行為。

(2)break-all

當屬性值為 ?break-all? 時,對于 non-CJK (CJK 指中文/日文/韓文) 的文本,可在任意字符間斷行。

fileOf7298.png

可以看到,長單詞在溢出的位置將剩余的文本進行了換行。使用 ?break-all? 將在英語和其他相關語言系統中發生溢出的確切位置在兩個字符之間斷開一個單詞。但是,它不會對中文、日文和韓文文本應用相同的行為。因為 CJK 書寫系統有自己的應用斷點規則。

(3)keep-all

如果使用值 ?keep-all,即使內容溢出,瀏覽器也不會將分詞應用于 CJK 文本。應用 keep-all 值的效果與非 CJK 書寫系統的正常效果相同。簡單來說就是,像英語這種 CJK 文本不會斷行,像中文這種 Non-CJK 文本表現同 ?normal

fileOf7298.png

(4)瀏覽器兼容性

fileOf7298.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/62821.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/62821.shtml
英文地址,請注明出處:http://en.pswp.cn/web/62821.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【NumPy進階】:內存視圖、性能優化與高級線性代數

目錄 1. 深入理解 NumPy 的內存視圖與拷貝1.1 內存視圖(View)1.1.1 創建視圖1.1.2 視圖的特點 1.2 數組拷貝(Copy)1.2.1 創建拷貝1.2.2 拷貝的特點 1.3 視圖與拷貝的選擇 2. NumPy 的優化與性能提升技巧2.1 向量化操作示例&#x…

HarmonyOS 5.0應用開發——屬性動畫

【高心星出品】 文章目錄 屬性動畫animateTo屬性動畫animation屬性動畫 屬性動畫 屬性接口(以下簡稱屬性)包含尺寸屬性、布局屬性、位置屬性等多種類型,用于控制組件的行為。針對當前界面上的組件,其部分屬性(如位置屬…

機器學習支持向量機(SVM)算法

一、引言 在當今數據驅動的時代,機器學習算法在各個領域發揮著至關重要的作用。支持向量機(Support Vector Machine,SVM)作為一種強大的監督學習算法,以其在分類和回歸任務中的卓越性能而備受矚目。SVM 具有良好的泛化…

介紹一款docker ui 管理工具

http://vm01:18999/main.html 管理員登陸賬號 jinghan/123456 ui啟動命令所在文件夾目錄 /work/docker/docker-ui 參考鏈接 DockerUI:一款功能強大的中文Docker可視化管理工具_docker ui-CSDN博客

Motrix WebExtension 使用教程

Motrix WebExtension 使用教程 項目地址:https://gitcode.com/gh_mirrors/mo/motrix-webextension 項目介紹 Motrix WebExtension 是一個瀏覽器擴展,用于與 Motrix 下載管理器集成。該擴展允許用戶通過 Motrix 下載管理器自動下載文件,而不是使用瀏覽器的原生下載管理器。…

前端(四)css選擇器、css的三大特性

css選擇器、css的三大特性 文章目錄 css選擇器、css的三大特性一、css介紹二、css選擇器2.1 基本選擇器2.2 組合選擇器2.3 交集并集選擇器2.4序列選擇器2.5屬性選擇器2.6偽類選擇器2.7偽元素選擇器 三、css三大特性3.1 繼承性3.2 層疊性3.3 優先級 一、css介紹 CSS全稱為Casca…

《探索視頻數字人:開啟未來視界的鑰匙》

一、引言 1.1視頻數字人技術的崛起 在當今科技飛速發展的時代,視頻數字人技術如一顆璀璨的新星,正逐漸成為各領域矚目的焦點。它的出現,猶如一場科技風暴,徹底改變了傳統的視頻制作方式,為各個行業帶來了前所未有的機…

【ETCD】[源碼閱讀]深度解析 EtcdServer 的 processInternalRaftRequestOnce 方法

在分布式系統中,etcd 的一致性與高效性得益于其強大的 Raft 協議模塊。而 processInternalRaftRequestOnce 是 etcd 服務器處理內部 Raft 請求的核心方法之一。本文將從源碼角度解析這個方法的邏輯流程,幫助讀者更好地理解 etcd 的內部實現。 方法源碼 …

免費下載 | 2024算網融合技術與產業白皮書

《2024算網融合技術與產業白皮書(2023年)》的核心內容概括如下: 算網融合發展概述: 各國細化算網戰略,指引行業應用創新升級。 算網融合市場快速增長,算力互聯成為投資新熱點。 算網融合產業模式逐漸成型…

基于卷積神經網絡的圖像二分類檢測模型訓練與推理實現教程 | 幽絡源

前言 對于本教程,說白了,就是期望能通過一個程序判斷一張圖片是否為某個物體,或者說判斷一張圖片是否為某個缺陷。因為本教程是針對二分類問題,因此主要處理 是 與 不是 的問題,比如我的模型是判斷一張圖片是否為蘋果…

安全見聞全解析

跟隨 瀧羽sec團隊學習 聲明! 學習視頻來自B站up主 瀧羽sec 有興趣的師傅可以關注一下,如涉及侵權馬上刪除文章,筆記只是方便各位師傅的學習和探討,文章所提到的網站以及內容,只做學習交流,其他均與本人以及…

代碼隨想錄-算法訓練營-番外(圖論02:島嶼數量,島嶼的最大面積)

day02 圖論part02 今日任務:島嶼數量,島嶼的最大面積 都是一個模子套出來的 https://programmercarl.com/kamacoder/0099.島嶼的數量深搜.html#思路往日任務: day01 圖論part01 今日任務:圖論理論基礎/所有可到達的路徑 代碼隨想錄圖論視頻部分還沒更新 https://programmercar…

RabbitMQ個人理解與基本使用

目錄 一. 作用: 二. RabbitMQ的5中隊列模式: 1. 簡單模式 2. Work模式 3. 發布/訂閱模式 4. 路由模式 5. 主題模式 三. 消息持久化: 消息過期時間 ACK應答 四. 同步接收和異步接收: 應用場景 五. 基本使用 &#xff…

前端怎么預覽pdf

1.背景 后臺返回了一個在線的pdf地址,需要我這邊去做一個pdf的預覽(需求1),并且支持配置是否可以下載(需求2),需要在當前頁就能預覽(需求3)。之前我寫過一篇預覽pdf的文…

Python 參數配置使用 XML 文件的教程:輕松管理你的項目配置

Python 參數配置使用 XML 文件的教程:輕松管理你的項目配置 一句話總結:當配置項存儲在外部文件(如 XML、JSON)時,修改配置無需重新編譯和發布代碼。通過更新 XML 文件即可調整參數,無需更改源代碼&#xf…

解決 MySQL 啟動失敗與大小寫問題,重置數據庫

技術文檔:解決 MySQL 啟動失敗與大小寫問題,重置數據庫 1. 問題背景 在使用 MySQL 時,可能遇到以下問題: MySQL 啟動失敗,日志顯示 “permission denied” 或 “Can’t create directory” 錯誤。MySQL 在修改配置文…

python webdriver-manager 實現selenium 免下載安裝webdriver

python webdriver-manager 實現selenium 免下載安裝webdriver selenium在自動化測試中,通常需要使用瀏覽器驅動來與瀏覽器進行交互。然而,手動下載、安裝、以及管理這些驅動非常麻煩,尤其是當驅動版本頻繁更新時。為此,webdriver-manager庫提供了一個極簡的方案,自動幫我…

滑動窗口算法專題

滑動窗口簡介 滑動窗口就是利用單調性,配合同向雙指針來優化暴力枚舉的一種算法。 該算法主要有四個步驟 1. 先進進窗口 2. 判斷條件,后續根據條件來判斷是出窗口還是進窗口 3. 出窗口 4.更新結果,更新結果這個步驟是不確定的&#xff0c…

C# 中的Task

文章目錄 前言一、Task 的基本概念二、創建 Task使用異步方法使用 Task.Run 方法 三、等待 Task 完成使用 await 關鍵字使用 Task.Wait 方法 四、處理 Task 的異常使用 try-catch 塊使用 Task.Exception 屬性 五、Task 的延續使用 ContinueWith 方法使用 await 關鍵字和異步方法…

【AIGC】如何高效使用ChatGPT挖掘AI最大潛能?26個Prompt提問秘訣幫你提升300%效率的!

還記得第一次使用ChatGPT時,那種既興奮又困惑的心情嗎?我是從一個對AI一知半解的普通用戶,逐步成長為現在的“ChatGPT大神”。這一過程并非一蹴而就,而是通過不斷的探索和實踐,掌握了一系列高效使用的技巧。今天&#…