文本換行word-wrap、word-break與white-space

来源:http://www.cnblogs.com/submerge/archive/2016/02/05/5183362.html
-Advertisement-
Play Games

本文同步至微信公眾號:http://mp.weixin.qq.com/s?__biz=MzAxMzgwNDU3Mg==&mid=401671055&idx=1&sn=b88c986e61708da0027fac035ad36f0f#rd 對於後續文章感興趣的可以添加關註: 文中有些地方沒顯示全,查看


本文同步至微信公眾號:http://mp.weixin.qq.com/s?__biz=MzAxMzgwNDU3Mg==&mid=401671055&idx=1&sn=b88c986e61708da0027fac035ad36f0f#rd

對於後續文章感興趣的可以添加關註:

文中有些地方沒顯示全,查看全部內容,請點擊上面的原文鏈接哈

在對頁面內容進行排版的時候,不可避免的會遇到對文本進行處理的問題。今天整理了文本換行相關的內容,記錄下來分享之。畢竟,好記性不如爛筆頭嘛。

對於文本換行,自己之前也處理過相關的問題。知道要用到word-wrap,word-break和white-space等相關的樣式規則。然而對於它們三個之前到底有什麼區別,還說不清楚。本著理論與實踐相結合實事求是的原則,今天抽時間看了下。

在mozilla官網上搜word-wrap會得到如下解釋:

The word-wrap property is used to specify whether or not the browser may break lines within words in order to prevent overflow when an otherwise unbreakable string is too long to fit in its containing box.

word-break的解釋:

The word-break CSS property is used to specify whether to break lines within words.

word-wrap 屬性用來標明是否允許瀏覽器在單詞內進行斷句,這是為了防止當一個字元串太長而找不到它的自然斷句點時而出現溢出包含框的現象。

word-break表明怎樣進行單詞內的斷句。

從字面意思來看這兩個都是用來對文本進行換行的,那麼這兩個到底有什麼區別呢?我們來看一下官網上給出的例子。

首先看一下word-wrap的語法:

word-wrap: normal;word-wrap: break-word;
p { width: 13em; background: gold; }


當指定word-wrap:normal(預設值)時,我們看到Fernstraßenbauprivatfinanzierungsgesetzesund   這串單詞很長des後面的位置顯示不下,它會換一行顯示,而且還從它的容器中溢出了。

 

p { width: 13em; background: gold; word-wrap: break-word; }

當我們給p元素加上樣式word-wrap:break-word時運行結果如下圖:


    我們看到Fernstraßenbauprivatfinanzierungsgesetzesund這麼一長串仍然會換到下一行顯示,當下一行的寬度仍然不夠顯示的時候,他就會換行顯示。官網上給的break-word的解釋是Indicates that normally unbreakable words may be broken at arbitrary points if there are no otherwise acceptable break points in the line.個人的理解是,對於普通的文本,當容器剩餘的空間不足以顯示的時候,它可以在任意的地方被截斷(換行顯示).

接下來在看看官網上給出的word-break的例子:

word-break的語法:

 

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

再來看下麵的三個實例:

.narrow {
    padding: 5px;
    border: 1px solid;
    width: 8em;}

 

<p>1. <code>word-break: normal</code></p><p class="normal narrow"> This is a long and Supercalifragilisticexpialidocious sentence. 次の単語グレートブリテンおよび北アイルランド連合王國で本當に大きな言葉 </p>
.normal {
    word-break: normal;}

運行結果如下圖:


    word-break:normal Use the default line break rule.也就是也就是單詞過長時不換行,超出的部分溢出。

再來看word-break: break-all

 

<p>2. <code>word-break: break-all</code></p><p class="breakAll narrow"> This is a long and Supercalifragilisticexpialidocious sentence. 次の単語グレートブリテンおよび北アイルランド連合王國で本當に大きな言葉 </p>
.breakAll {
    word-break: break-all;}

運行結果如下圖:


        break-all:Word breaks may be inserted between any character for non-CJK (Chinese/Japanese/Korean) text.單詞可能在任何位置被截斷(中文,日文和韓文除外)

上文中有提到word-wrap:break-word也是對文本進行截斷處理。它兩的區別就在於break-word對於長文本會換到下一行進行顯示,如果下一行也顯示不完則進行換行。而break-all對於長文本不會換到下一行,直接在當前行截斷顯示(如上圖)

那麼word-break:keep-all的作用呢?我們知道對於中文,日語,北韓文不會出現像英文單詞那樣出現一個很長很長的串。對於CJK來說預設的就是換行顯示的比如:

 

<p class="narrow"> This is a long and Supercalifragilisticexpialidocious sentence. 次の単語グレートブリテンおよび北アイルランド連合王國で本當に大きな言葉</p>

這段文字它的運行效果如下圖:


    但有時候我們可能會碰到這樣的需求,對於中文不讓它進行換行,在同一行進行顯示,這時候就是keep-all出場的時候了。在上圖的例子的基礎上,加上word-break:keep-all之後的顯示效果如下圖:


    加上word-break:keep-all之後,圖中的日文(沒學過島國語言,姑且這麼稱呼吧)就在同一行進行顯示了。

keep-all:Don't allow word breaks for CJK text.  Non-CJK text behavior is the same as for normal.這個是官網對這一條規則的解釋。對於cjk文本,不允許換行顯示。

以上(word-wrap,word-break)就是css中對於文本換行相關的處理。接下來在來看一下white-space.

官網上對於white-space的解釋是white-space CSS 屬性是用來描述如何處理元素中的空格。

 

white-space: normal
white-space: nowrap
white-space: pre
white-space: pre-wrap
white-space: pre-line

normal

    • 連續的空白符會被合併,換行符會被當作空白符來處理。填充line盒子時,必要的話會換行。這就是預設我們所看到的。

      nowrap

      和 normal 一樣,連續的空白符會被合併。但文本內的換行無效。當我們不想讓文本進行換行顯示時,使用white-space:nowrap時也管用的原因就在於此。

       

pre

連續的空白符會被保留。在遇到換行符或者<br>元素時才會換行。

    有的時候,我們為了防止文本溢出,需要對於超出包含框的文本做隱藏或換行處理。也有的時候,我們又有這樣的需求,不讓文本進行換行。以上是整理了我根據平時工作中遇到的文本換行相關的一些問題及處理方式的分析。。文中所提到的官網均只mozilla官網。如果文中有不對的地方或者您還有其他的好的方法處理文本換行,歡迎一起討論哈。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 寫文件大家出現最多的是漢字知碼之類的問題,今天不是亂碼問題,是出現在大量空字元,用記事本打開是不可見的。如果用NodePad++打開則會顯示NUL 問題分題: 剛開始以為是編碼問題,試了幾個編碼發現問題依舊。後來發現在就在最後出來空字元應該是在寫文件時出現了異常。請下以下兩段代碼 //有問題的代碼t
  • 一、什麼是原型模式 通過複製一個已存在對象來生成一個新對象,被覆制的對象稱為原型; 二、補充說明 1、JAVA中Object的clone方法已經為什麼提供了複製對象的實現,且該方法為本地方法,性能好,在需要大量複製對象的情況,使用clone創建對象比new效率高; 補充下深拷貝和淺拷貝,深拷貝是通過
  • 一、什麼是單例模式 一個類只有一個全局實例 二、補充說明 一般把其構造方法設為私有,另外提供一個可以獲取該實例的靜態方法; 由於java存在反射機制,即使是私有構造方法,也能被外部創建,所以一般的寫法嚴格來講不屬於單例模式;(ps:可以在構造方法內加個靜態flag標誌判斷,保證其只能創建一次) 違背
  • 1、多媒體簡介 Web 上的多媒體指的是音效、音樂、視頻和動畫,多媒體有多種不同的格式,它可以是聽到或看到的任何內容,文字、圖片、音樂、音效、錄音、電影、動畫等等。在互聯網上,幾乎在所有網站都能發現嵌入網頁中的多媒體元素,現代瀏覽器已支持多種多媒體格式。 第一代瀏覽器只支持文本,而且即使是對文本的支
  • 學習完《鋒利的jQuery》,用時13天。 這期間,私底下又用了一點時間去W3C上把HTML和CSS重新過了一遍。 總的來說,收穫還是蠻多的。 其實在本書裡面真正重要的也就前幾章,後面的都是一些插件什麼的。這些W3C上面都有。 當然我自己感覺第11章,也就是jQuery的簡單性能優化,雖然少了點,但
  • 在 JavaScript 中,每個函數對象都有一個預設的屬性 prototype,稱為函數對象的原型成員,這個屬性指向一個對象,稱為函數的原型對象,當我們每定義了一個函數的時候,JavaScript 就創建了一個對應的原型對象,也就是說,當我們定義一個函數的時候,實際上得到了兩個對象,一個函數對象,
  • 函數是JavaScript中最靈活的一種對象,這裡只是講解其匿名函數的用途。匿名函數:就是沒有函數名的函數。 函數的定義,大致可分為三種方式: 第一種:這也是最常規的一種 1 2 3 function double(x){ return 2 * x; } 第二種:這種方法使用了Function構造函
  • 關於性能優化 合適的選擇器 $("#id")會直接調用底層方法,所以這是最快的。如果這樣不能直接找到,也可以用find方法繼續查找 $("p")標簽選擇器也是直接調用底層方法,所以是第二選擇 $(".class")也是直接調用底層方法,不過IE8及更早版本不支持getElementByClassNa
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...