垂直對齊:vertical-align屬性(轉)


行高與單行純文字的垂直居中,而如果行內含有圖片和文字,在瀏覽器內瀏覽時,讀者可以發現文字和圖片在垂直方向並不是沿中線居中,而是沿基線對齊,如圖7-34所示。 

/web/css/text/img/text_034.gif


圖7-34 文字和圖片內容默認垂直對齊方式為基線對齊 

這是因為,元素默認的垂直對齊方式為基線對齊(vertical-align: baseline)。 


7.4.1 語法 

vertical-align屬性的具體定義列表如下: 
語法:        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 
繼承性:        不繼承 
適用於:        行內元素和單元格(table-cell)元素 
媒體:        視覺 
計算值:        百分比和長度值為絕對長度;其他同指定值 

此處需要特別注意的是:垂直對齊屬性只對行內元素有效。例如有如下代碼: 

<p style=”vertical-align:super;”>垂直對齊<span>上標</span></p>


<p>元素默認為塊級元素,因此在瀏覽器內瀏覽時將不會有任何變化。而如下代碼: 

<p>垂直對齊<span >上標</span></p>


<span>元素默認為行內元素,因此顯示如圖7-35所示。 

/web/css/text/img/text_035.gif


圖7-35垂直對齊屬性只對行內元素有效 
行內元素還包括圖片、表單輸入元素等,同時,垂直對齊不能被繼承。 


7.4.2 屬性值詳解 

在[7.3 行高 line-height]一節中,曾經介紹了文本的基線、頂線、中線和底線,還有內容區域、行內框和行框,而本節的垂直對齊和這幾個概念密切相關。 
垂直對齊主要屬性值的表現形式如圖7-36所示。 

/web/css/text/img/text_036.gif


圖7-36 垂直對齊的主要屬性值示意 

1. 基線對齊(vertical-align : baseline) 
基線對齊(vertical-align : baseline)使元素的基線同父元素的基線對齊,例如有如下代碼: 

p strong { 
line-height : 7em; 
font-size : 2em; 
vertical-align : baseline; 

<p>基線對齊<strong>vertical-align:baseline;</strong></p>


則其顯示如圖7-37所示。 

/web/css/text/img/text_037.gif


圖7-37 基線對齊 
而像圖片或者輸入框這樣的元素,本身沒有基線,則將其底端同父元素的基線對齊,如圖7-34所示。 


2. 頂端對齊(vertical-align : top) 

頂端對齊(vertical-align : top)是將元素的行內框的頂端與行框的頂端對齊,例如有如下代碼: 

p { 
line-height : 7em; 

p strong { 
vertical-align:top; 
line-height:2em; 

p img { 
vertical-align : top; 

<p>頂端對齊:<strong>vertical- align:top;</strong><img src="img/ddcat_anim.gif" alt="圖 片" width="88" height="31" /></p>


則其顯示如圖7-38所示。 

/web/css/text/img/text_038.gif


圖7-38 頂端對齊 

對於<strong>元素,不僅設定了vertical-align,還設定了line-height,這是因為在本章 [7.3.2 內容區域、行內框和行框]一節中關於行內框的說明中介紹過,行高可以改變行內框的高度,如果不重新設定行高, 則<strong>元素繼承了父元素<p>的行高,因此行內框高和行框的高度是一樣的,則頂端對齊將看不出效果。 


3. 文本頂端對齊(vertical-align : text-top) 

文本頂端對齊(vertical-align : text-top)是將元素行內框的頂端同文本行的頂線對齊,例如有如下代碼,其顯示如圖7-39所示。 

p { 
line-height : 7em; 

p strong { 
vertical-align : text-top; 
line-height : 2em; 

p img { 
vertical-align : text-top; 

<p>文本頂端對齊:<strong> vertical- align:top;</strong><img src="img/ddcat_anim.gif" alt="圖 片" width="88" height="31" /></p>

 

/web/css/text/img/text_039.gif


圖7-39 文本頂端對齊 


4. 底端對齊(vertical-align : bottom) 

底端對齊(vertical-align : bottom)與頂端對齊(vertical-align : top)相反,如圖7-40所示。 

/web/css/text/img/text_040.gif


圖7-40 底端對齊 


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

文本底端對齊(vertical-align : text-bottom)與文本頂端對齊(vertical-align : text-top)相反,如圖7-41所示。 

/web/css/text/img/text_041.gif


圖7-41 文本底端對齊 


6. 中間對齊(vertical-align : middle) 

中間對齊(vertical-align : middle)通常使用在圖片上,將圖片的垂直方向的中線與文本行的中線對齊,例如有XHTML代碼如下,其顯示如圖7-42所示。 

p img { vertical-align : middle; } 
<p>中間對齊為基線上方0.5ex處<img src="img/ddcat_ad.gif" alt="圖片" width="180" height="60" /></p>

 

/web/css/text/img/text_042.gif


圖7-42 中間對齊 

中線的定義為:中線位於基線的上方,與基線的距離為小寫字母x高度(即ex)的一半,如圖7-36所示。而ex同字體尺寸相關,大部分瀏覽器認為1ex = 0.5em,因此會將基線以上四分之一em處作為中線來對齊。 

注意:同在行高顯示上的差別一樣,在中間對齊上,各瀏覽器之間也稍有些差異。




7. 上標和下標 

上標(vertical-align:super)使元素的基線(替換元素的底端)相對於父元素的基線升高,下標(vertical-align:sub)使元素的基線降低,移動的幅度CSS規范中沒有規定,由瀏覽器來決定。例如有如下代碼,其顯示如圖7-43所示。 

<p>上標文字<span >vertical-align:super;</span>下標文 字<span >vertical-align:sub;</span></p>

 

/web/css/text/img/text_043.gif


圖7-43 上標和下標 

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


8. 長度值和百分比 

和上下標類似,長度值和百分比值可使元素的基線(替換元素的底端)相對於父元素的基線升高(正值)或者降低(負值)。 
上下標的移動尺寸是由瀏覽器確定的,而設定長度值或者百分比,可以精確控制文字上下移動的幅度。 
百分比與行高有關,例如有如下代碼,其顯示如圖7-44所示。 

p { line-height : 2em; } 
<p>行高2em,縱向百分比對齊:<span >100% 正數向上</span>,而<span >-100%負數向下& lt;/span>。</p>

 

/web/css/text/img/text_044.gif


圖7-44 百分比對齊 
設置垂直對齊會影響到行框高,例如有如下代碼,其顯示如圖7-45所示。 

p { line-height : 2em; } 
<p>垂直對齊<span >正數向上</span& gt;,而<span >負數向下</span>。&lt; p&gt;行高2em,而設置垂直對齊的文字撐開了行框。</p>

 

/web/css/text/img/text_045.gif


圖7-45 垂直對齊對行框的影響 

注意:在IE中設定百分比或者數值對齊會造成內容的疊加混亂,如圖7-46所示。

 

/web/css/text/img/text_046.gif


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM