【前端乾貨】CSS 的空格處理

一、空格規則
HTML 代碼的空格通常會被瀏覽器忽略。
在這裏插入圖片描述

<p>◡◡hello◡◡world◡◡</p>

上面是一行 HTML 代碼,文字的前部、內部和後部各有兩個空格。爲了便於識別,這裏使用半圓形符號◡表示空格。

瀏覽器的輸出結果如下。

hello world

可以看到,文字的前部和後部的空格都會忽略,內部的連續空格只會算作一個。這就是瀏覽器處理空格的基本規則。

如果希望空格原樣輸出,可以使用

標籤。

<pre>◡◡hello◡◡world◡◡</pre>

另一種方法是,改用 HTML 實體 表示空格。

<p>&nbsp;&nbsp;hello&nbsp;&nbsp;world&nbsp;&nbsp;</p>

二、空格字符

HTML 處理空格的規則,適用於多種字符。除了普通的空格鍵,還包括製表符(\t)和換行符(\r和\n)。

瀏覽器會自動把這些符號轉成普通的空格鍵。

<p>hello
world</p>

上面代碼中,文本內部包含了一個換行符,瀏覽器視同爲空格,輸出結果如下。

hello world

所以,文本內部的換行是無效的(除非文本放在

標籤內)。

<p>hello<br>world</p>

上面代碼使用
標籤顯式表示換行

三、CSS 的 white-space 屬性

HTML 語言的空格處理,基本上就是直接過濾。這樣的處理過於粗糙,完全忽視了原始文本內部的空格可能是有意義的。

CSS 提供了一個white-space屬性,可以提供更精確一點的空格處理方式。該屬性共有六個值,除了一個通用的inherit(繼承父元素),下面依次介紹剩下的五個值。

3.1 white-space: normal

white-space屬性的默認值爲normal,表示瀏覽器以正常方式處理空格。

<p>◡◡hellohellohello◡hello
world
</p>

上面代碼中,文本前部有兩個空格,內部有一個長單詞和一個換行符。

然後,容器

指定一個比較小的寬度。爲了便於識別,背景色設爲紅色。

p {
 width: 100px;
 background: red;
}

顯示效果如下圖。
在這裏插入圖片描述

可以看到,文首的空格被忽略。由於容器太窄,第一個單詞溢出容器,然後在後面一個空格處換行。文本內部的換行符自動轉成了空格。

3.2 white-space: nowrap

white-space屬性爲nowrap時,不會因爲超出容器寬度而發生換行。

p {
  white-space: nowrap;
}

顯示效果如下圖。
在這裏插入圖片描述

所有文本顯示爲一行,不會換行。

3.3 white-space: pre

white-space屬性爲pre時,就按照

標籤的方式處理。

p {
  white-space: pre;
}

顯示效果如下圖。
在這裏插入圖片描述
上面結果與原始文本完全一致,所有空格和換行符都保留了。

3.4 white-space: pre-wrap

white-space屬性爲pre-wrap時,基本還是按照

標籤的方式處理,唯一區別是超出容器寬度時,會發生換行。

p {
  white-space: pre-wrap;
}

顯示效果如下圖。
在這裏插入圖片描述
文首的空格、內部的空格和換行符都保留了,超出容器的地方發生了折行。

3.5 white-space: pre-line

white-space屬性爲pre-line時,意爲保留換行符。除了換行符會原樣輸出,其他都與white-space:normal規則一致。

p {
 white-space: pre-line;
}

顯示效果如下圖。
在這裏插入圖片描述
除了文本內部的換行符沒有轉成空格,其他都與normal的處理規則一致。這對於詩歌類型的文本很有用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章