CSS行高line-height屬性理解及應用帖)

來源:互聯網
上載者:User

轉自jcdmt的部落格

 

CSS行高line-height屬性理解及應用

行高的概念看上去很簡單——文字行的高度,其實,行高所涉及到的基礎知識,對於今後理解其它屬性也很重要。
大片密密麻麻的文字往往會讓人覺得乏味,因此適當地調整行高(line-height)可以減低閱讀的困難與枯燥,並且使頁面顯得美觀。行高指的是文本行的基準間的距離,但是文本之間的空白距離不僅僅是行高決定的,同時也受字型大小的影響。

 

 7.3.1 文法 line-height屬性的具體定義列表如下: 文法:       

      line-height : normal | <實數> | <長度> | <百分比> | inherit

      說明:        設定元素中行的高度。

         值:       

              normal:預設行高,一般為1到1.2;

              實數:實數值,縮放因子;

              長度:合法的長度值,可為負數;

              百分比:百分比取值基於元素的字型尺寸。

   初始值:        normal 繼承性:        繼承 適用於:        所有元素 媒體:        視覺 計算值:        長度和百分比值為絕對值;其他同指定值

   行高指的是文本行的基準間的距離。而基準(Base line),指的是一行字橫排時下沿的基礎線,基準並不是漢字的下端沿,而是英文字母x的下 端沿,同時還有文字的頂線(Top line)、中線(Middle line)和底線(Bottom       line),用以確定文字行的位置,7-17 所示。

 

圖7-17 文字的基準

 

行高與字型尺寸的差稱為行距(leading),7-18所示。

 

圖7-18 行高

 

7.3.2 內容地區、行內框和行框 理論上講,一行中的每個元素都有一個內容地區,它是由字型尺寸決定的,7-19所示。

圖7-19 內容地區

 

行內元素會產生一個行內框(inline box),行內框只是一個概念,它無法顯示出來,但是它又確實存在。在沒有其他因素影響的時候,行內框 等於內容地區,而設定行高則可以增加或者減少行內框的高度,即:將行距的值(行高-字型尺寸)除以2,分別增加到內容地區的上下兩邊,7-20所示。

  

圖7-20 行內框與行高

 

由於行高可以應用在任何元素上,因此同一行內的若干元素可能有不同的行高和行內框高,例如有如下代碼,其顯示7-21所示。

<p style="line-height:20px;">&lt;p& gt;行高20px。<strong style="line-height:50px;">&lt;strong&gt; 行高50px。</strong><span style="line-height:30px;">&lt; span&gt;行高30px。</span></p>
 

圖7-21 行內框與行框

 

這裡又有一個新的概念——行框(line box)。同行內框類似,行框是指本行的一個虛擬矩形框,其高度等於本行內所有元素中行高最大的值。因此,當有多行內容時,每行都會有自己的行框,7-22所示。  


圖7-22 多行內容的行框

 

提示:理解行框和行內框的概念對於學習本章[7.4垂直對齊:vertical-align屬性]一節的內容非常重要。 注意:行框的高度只同本行內元素的行高有關,而和父元素的高度(height)無關。

7.3.3 行高的計算與繼承 以em、ex和百分比為單位的行高,其基數是元素本身的字型尺寸。例如有代碼如下:

<p style="font-size:20px;line-height:2em;">字高20px,行高2em。</p> <p style="font-size:30px;line-height:2em;">字高30px,行高2em。</p>
2個段落的行高都為2em,但是字型大小不同,因此顯示7-23所示。


圖7-23 行高的計算

 

行高可以設定得比字型高度小,此時多行的文字將疊加到一起,例如有如下代碼,其顯示7-24所示。
p { font-size : 20px; line-height :10px; } <p>字高20px,行高10px。此時多行的文字將疊加到一起。</p>


  圖7-24 比字型高度小的行高

 

行高是可繼承的,但是繼承的是計算值,例如有如下代碼:
p { font-size :20px; line-height : 2em; } p span { font-size : 30px; } <p>字高20px。<span>字高30px。</span></p> <p>元素的行高2em,字型尺寸為20px,因此計算值為40px,雖然<span>元素本身的字型尺寸為30px,不過其繼承的行高仍為40px。但是在不同的瀏覽器內顯示的效果卻不盡相同,7-25所示。


圖7-25 行高的不同表現

 

由於繼承的是計算值,因此當元素內的文字字型尺寸不一樣的時候,如果設定固定的行高很可能造成字型的重疊,例如有如下代碼,其顯示7-26所示。
p { font-size : 20px; line-height : 1em; } p span { font-size : 30px; } <p>字高20px,行高1em,當文本為多行時可能會發生文字重疊的想象。<span>字高30px。</span></p>


圖7-26行高繼承造成文字疊加

 

為了避免這種情況,可以為每個元素單獨定義行高,但是這樣很煩瑣,因此可以定義一個沒有單位的實數值作為縮放因子來統一控制行高,縮放因子是直接繼承的,而不是繼承計算值。例如修改上例中的行高為:
p { line-height : 1; }
則上例中的XHTML代碼顯示7-27所示。


 圖7-27縮放因子對行高的影響 當內容中含有圖片的時候,如果圖片的高度大於行高,則含有圖片行的行框將被撐開到圖片的高度,7-28所示。


 圖7-28 含有圖片的行


注意:圖片雖然撐開了行框,但是不會影響行高,因此也不會影響到基於行高來計算的其他屬性。 提示:當行內含有圖片的時候,圖片和文字的垂直對齊預設是基準對齊,關於垂直對齊將在本章[7.4 垂直對齊:vertical-align屬性]一節中討論。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.