深入理解 CSS 中的行高與基線

1、基本概念

1.  基線、底線、頂線、中線[Css精通]深入理解CSS中的行高與基線 - 舊城 - 秋·水落石出

注意:基線(base line)並不是漢字文字的下端沿,而是英文字母“x”的下端沿。

2. 內容區
內容區

內容區是指底線和頂線包裹的區域(行內元素display:inline可以通過background-color屬性顯示出來),實際中不一定看得到,但確實存在。內容區的大小依據font-size的值和字數進行變化。

3. 行距、行高
行距和行高

行高(line-height):包括內容區與以內容區爲基礎對稱拓展的空白區域,我們稱之爲行高。一般情況下,也可以認爲是相鄰文本行基線間的距離。

行距:指相鄰文本行間上一個文本行基線和下一文本行頂線之間的距離。當然,我更願意認爲是(上文本行行高-內容區高度)/2+(下文本行行高-內容區高度)/2。

4. 行內框
行內框
行內框是一個瀏覽器渲染模型中的一個概念,無法顯示出來,但是它又確實存在,它的高度就是行高指定的高度。

5. 行框
行框

行框(line box),同行內框類似的概念,行框是指本行的一個虛擬的矩形框,也是瀏覽器渲染模式中的一個概念。行框高度等於本行內所有元素中行內框最大的值(以行高值最大的行內框爲基準,其他行內框採用自己的對齊方式向基準對齊,最終計算行框的高度)。



Vertical-align:垂直居中

上一節我們講解了行高與單行純文字的垂直居中(line-height),而如果行內含有圖片和文字,在瀏覽器渲染出來後,讀者可以發現文字和圖片在垂直方向並不是沿中線居中,而是沿基線對齊。這是因爲,元素默認的垂直對齊方式爲基線對齊(vertical-align: baseline)。



CSS
語法:vertical-align
語法:
baseline | sub | super | top | text-top | middle | bottom | text-bottom | <百分比> | <長度> | inherit
說明:
設置元素內容的垂直對齊方式。
參數:
baseline: 基線對齊;
sub: 下標顯示;
super: 上標顯示;
top: 頂端對齊;
text-top: 文本的頂端對齊;
middle: 中部對齊;  //沒有研究透的屬性
bottom: 底端對齊;
text-bottom:   文本的底端對齊;
百分比和長度: CSS2,可爲負數。
初始值:baseline
繼承性:不繼承

 此處需要特別注意的是:垂直對齊屬性只對文本有效(是指包含了#Text節點的元素節點才能正確地處理vertical-align屬性)。同時,該屬性不能繼承。


屬性值詳解

在上面一節中,介紹了文本的基線、頂線、中線和底線,還有內容區、行內框和行框,而本節的垂直對齊和這幾個概念密切相關。

垂直對齊主要屬性值的表現形式如上圖所示。



1. 基線對齊(vertical-align : baseline)
基線對齊(vertical-align : baseline)使元素的基線同基準元素(取行高最高的作爲基準)的基線對齊



2. 頂端對齊(vertical-align : top)
頂端對齊(vertical-align : top)是將元素的行內框的頂端與行框的頂端對齊



3. 文本頂端對齊(vertical-align : text-top)
文本頂端對齊(vertical-align : text-top)是將元素行內框的頂端同文本行的頂線對齊



4. 底端對齊(vertical-align : bottom)
底端對齊(vertical-align : bottom)與頂端對齊(vertical-align : top)相反


5. 文本底端對齊(vertical-align : text-bottom)


6. 中間對齊(vertical-align : middle)
中間對齊(vertical-align : middle)通常使用在圖片上,將圖片的垂直方向的中線與文本行的中線對齊。(對於文字的處理有些偏差,具體依據還沒有研究出來,有研究的同學可以聯繫我哦~~)

中線的定義爲:中線位於基線的上方,與基線的距離爲小寫字母x高度的一半(即0.5ex),而ex同font-size相關,大部分瀏覽器認爲1ex = 0.5em(em同樣也是相對單位,不是絕對單位),因此會將基線以上四分之一em處作爲中線來對齊。

7. 上標和下標
上標(vertical-align:super)使元素的基線相對於基準元素的基線升高,下標(vertical-align:sub)使元素的基線降低,移動的幅度CSS規範中沒有規定,由瀏覽器來決定。

上下標不會改變元素文字的尺寸大小。

8. 長度值和百分比
和上下標類似,長度值和百分比值可使元素的基線相對於基準元素的基線升高(正值)或者降低(負值)。

上下標的移動尺寸是由瀏覽器確定的,而設定長度值或者百分比,可以精確控制文字上下移動的幅度。
百分比與行高有關(line-height),例如有如下代碼,其顯示如圖7-44所示。



發佈了39 篇原創文章 · 獲贊 35 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章