posts - 64,  comments - 9,  trackbacks - 0
          行高的概念看上去很簡單——文字行的高度,其實,行高所涉及到的基礎知識,對于今后理解其它屬性也很重要。

          大片密密麻麻的文字往往會讓人覺得乏味,因此適當地調整行高(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 所示。

          /web/css/text/img/text_017.gif

          圖7-17 文字的基線 行高與字體尺寸的差稱為行距(leading),如圖7-18所示。

          /web/css/text/img/text_018.gif

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

          /web/css/text/img/text_019.gif

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

          /web/css/text/img/text_020.gif

          圖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>

           

          /web/css/text/img/text_021.gif

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

          /web/css/text/img/text_022.gif

          圖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所示。
          /web/css/text/img/text_023.gif
            圖7-23 行高的計算 行高可以設定得比字體高度小,此時多行的文字將疊加到一起,例如有如下代碼,其顯示如圖7-24所示。
          p { font-size : 20px; line-height :10px; } <p>字高20px,行高10px。此時多行的文字將疊加到一起。</p>
          /web/css/text/img/text_024.gif
            圖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所示。
          /web/css/text/img/text_025.gif
          圖7-25 行高的不同表現 由于繼承的是計算值,因此當元素內的文字字體尺寸不一樣的時候,如果設定固定的行高很可能造成字體的重疊,例如有如下代碼,其顯示如圖7-26所示。
          p { font-size : 20px; line-height : 1em; } p span { font-size : 30px; } <p>字高20px,行高1em,當文本為多行時可能會發生文字重疊的想象。<span>字高30px。</span></p>
          /web/css/text/img/text_026.gif
          圖7-26行高繼承造成文字疊加 為了避免這種情況,可以為每個元素單獨定義行高,但是這樣很煩瑣,因此可以定義一個沒有單位的實數值作為縮放因子來統一控制行高,縮放因子是直接繼承的,而不是繼承計算值。例如修改上例中的行高為:
          p { line-height : 1; } 
          則上例中的XHTML代碼顯示如圖7-27所示。
          /web/css/text/img/text_027.gif
          圖7-27縮放因子對行高的影響 當內容中含有圖片的時候,如果圖片的高度大于行高,則含有圖片行的行框將被撐開到圖片的高度,如圖7-28所示。
          /web/css/text/img/text_028.gif
          圖7-28 含有圖片的行
          注意:圖片雖然撐開了行框,但是不會影響行高,因此也不會影響到基于行高來計算的其他屬性。 提示:當行內含有圖片的時候,圖片和文字的垂直對齊方式默認是基線對齊,關于垂直對齊將在本章[7.4 垂直對齊:vertical-align屬性]一節中討論。
          posted on 2009-07-30 17:51 super_nini 閱讀(237) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2009年7月>
          2829301234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          常用鏈接

          留言簿

          隨筆檔案

          文章檔案

          相冊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 六盘水市| 壶关县| 广灵县| 宁远县| 安化县| 永靖县| 兴化市| 淮滨县| 琼中| 太湖县| 咸丰县| 白朗县| 比如县| 永寿县| 石楼县| 察哈| 沙河市| 平乡县| 台中县| 富民县| 孟津县| 梨树县| 黄大仙区| 深水埗区| 鸡东县| 元江| 平昌县| 句容市| 应城市| 寿阳县| 沅江市| 永清县| 县级市| 廊坊市| 莱西市| 利津县| 洞口县| 遂宁市| 昌黎县| 杭锦后旗| 武夷山市|