首頁»HTML/CSS»CSS 的空格處理

CSS 的空格處理

來源:ruanyifeng 發布時間:2018-08-01 閱讀次數:

一、空格規則

HTML 代碼的空格通常會被瀏覽器忽略。


<p>??hello??world??</p>

上面是一行 HTML 代碼,文字的前部、內部和后部各有兩個空格。為了便于識別,這里使用半圓形符號?表示空格。

瀏覽器的輸出結果如下。


hello world

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

如果希望空格原樣輸出,可以使用<pre>標簽。


<pre>??hello??world??</pre>

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


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

二、空格字符

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

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


<p>hello
world</p>

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


hello world

所以,文本內部的換行是無效的(除非文本放在<pre>標簽內)。


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

上面代碼使用<br>標簽顯式表示換行。

三、CSS 的 white-space 屬性

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

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

3.1 white-space: normal

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


<p>??hellohellohello?hello
world
</p>

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

然后,容器<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時,就按照<pre>標簽的方式處理。


p {
  white-space: pre;
}

顯示效果如下圖。

上面結果與原始文本完全一致,所有空格和換行符都保留了。

3.4 white-space: pre-wrap

white-space屬性為pre-wrap時,基本還是按照<pre>標簽的方式處理,唯一區別是超出容器寬度時,會發生換行。


p {
  white-space: pre-wrap;
}

顯示效果如下圖。

文首的空格、內部的空格和換行符都保留了,超出容器的地方發生了折行。

3.5 white-space: pre-line

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


p {
  white-space: pre-line;
}

顯示效果如下圖。

除了文本內部的換行符沒有轉成空格,其他都與normal的處理規則一致。這對于詩歌類型的文本很有用。

四、參考鏈接

(完)

QQ群:WEB開發者官方群(515171538),驗證消息:10000
微信群:加小編微信 849023636 邀請您加入,驗證消息:10000
提示:更多精彩內容關注微信公眾號:全棧開發者中心(fsder-com)
CSS
網友評論(共0條評論) 正在載入評論......
理智評論文明上網,拒絕惡意謾罵 發表評論 / 共0條評論
登錄會員中心
大发国际网址 东乡| 扶绥县| 万全县| 高台县| 沂南县| 濮阳县| 简阳市| 甘洛县| 丰都县| 榕江县| 五河县| 绥德县| 焦作市| 梅河口市| 卓资县| 类乌齐县| 桓仁| 临汾市| 汽车| 中西区| 通江县| 徐汇区| 巫山县| 清流县| 梁平县| 甘南县| 镇宁| 甘孜县| 辉南县| 许昌市| 靖边县| 且末县| 清远市| 霍林郭勒市| 新闻| 仙桃市| 冷水江市| 斗六市| 凤凰县| 渭源县| 房山区| 水城县| 青河县| 连城县| 洛南县| 辽阳县| 全南县| 南宁市| 林芝县| 赤峰市| 襄城县| 内乡县| 华亭县| 顺平县| 牡丹江市| 高陵县| 山东| 牙克石市| 石台县| 阿克陶县| 达孜县| 贞丰县| 沈丘县| 广水市| 马尔康县| 镇坪县| 咸阳市| 长子县| 河曲县| 桑日县| 沭阳县| 昭平县| 藁城市| 恭城| 辽中县| 密云县| 泰宁县| 抚顺市| 上蔡县| 延庆县| 乐亭县| 正宁县| 监利县| 游戏| 九江市| 西充县| 芮城县| 寻乌县| 阳泉市| 张家口市| 怀化市| 兴文县| 芦山县| 武隆县| 门头沟区| 和田市| 沅江市| 辽阳县| 广南县| 册亨县| 公主岭市| 贺州市| 徐水县| 河间市| 集安市| 新沂市| 岳阳市| 巩留县| 类乌齐县| 铁力市| 靖江市| 郁南县| 邢台市| 乐至县| 丰宁| 都匀市| 大丰市| 水富县| 塔河县| 商丘市| 宁河县| 德格县| 雷州市| 道孚县| 桐梓县| 嘉义县| 英吉沙县| 万全县| 昌宁县| 南靖县| 兰州市| 湘潭市| 布尔津县| 浮梁县| 洞头县| 平顺县| 科技|