什么是line-height(行高)?
line-height 是指兩行文字基線之間的距離。
什么是基線?
基線、底線、頂線、中線
注意:

行距、行高
line-height 與行內框盒子模型
所有內聯元素的樣式表現都與行內框盒子模型有關。例如浮動的圖文環繞效果... and so on
什么是行內框盒子模型
我們通過下面這段代碼進行講解
<p>這是一行普通的文字,這里有個<em>em</em>標簽</p>
在這段代碼中包含了 4 中盒子:
content area 內容區是指底線和頂線包裹的區域(行內元素 display:inline 可以通過 background-color 屬性顯示出來),實際中不一定看得到,但確實存在。內容區的大小依據 font-size 的值和字數進行變化。

inline boxes 。內聯盒子不會讓內容成塊排列,而是排成一行。如果外部 inline 水平的標簽( span 、 a 、 em 等)則屬于 內聯盒子 ,如果是光禿禿的文字則屬于 匿名內聯盒子 。

line boxes 。每一行就是一個 行框盒子 。每個行框盒子又是由一個個 內聯盒子 組成。

containing box 包含盒子。 包含盒子 是由一行一行的 行框盒子 組成。 <p> 標簽就代表了一個 包含盒子 。(即上圖中的綠色部分)
line-height 的高度機理
深入理解內聯元素的高度表現
在講解原理之前,我們先看以下代碼:
<p>這是一行普通的文字,這里有個<em>em</em>標簽</p>
console.log(document.querySelector('p').clientHeight); // 輸出36px現在我們思考這樣幾個問題:
the answer is :元素的高度是由 line-height 決定的:
line-height 明明是兩基線之間的距離,單行文字哪來行高,還控制了高度?
line-height 沒有任何關系。(在 simsun 字體下,內容區域高度等于 font-size )。換句話說,在 simsun 字體下: font-size+行間距=line-height總結
line-height 的各類屬性值
normal
line-height:normal; 默認屬性值,與瀏覽器相關,且與元素字體相關聯。
<number>
line-height:1.5; 使用數值作為行高,根據當前元素的 font-size 大小計算。
<length>
line-height:1.5em; 、 line-height:1.5rem; 、 line-height:20px; 使用具體單位作為行高值。
<percent>
line-height:150% 使用百分比作為行高值。相對于設置了該 line-height 屬性的元素的 font-size 大小計算。
inherit
input{line-height:inherit;} ,行高繼承。使用 inherit 可以讓文本框樣式可控性更強。 行高默認具有繼承性,為什么還是這樣做??? 控件元素 的默認行高是 normal ,而不是繼承父級元素的行高。
line-height:1.5 、 line-height:1.5em; 、 line-height:150% 的區別
在計算結果上是相同的,但是所影響的元素有區別。
line-height:1.5 所有可繼承元素會根據 font-size 重新計算行高。(也就是說其子元素都會根據自身的 font-size * 1.5 計算行高,每個子元素都要進行一次計算。)line-height:150%/1.5em ,當前元素根據 font-size 計算行高,繼承給下面的元素。(當前元素根據 font-size 計算行高,然后將所計算的出來的值繼承給后代,也就是說只需要當前元素進行計算,而子元素不需要重新計算。)body 全局數值使用經驗
如果是 blog ,已閱讀為主的網頁, line-height:1.5/1.6 較為適宜。
如果是面向用戶,并不是閱讀為主的網頁,則推薦使用匹配 20 像素的使用經驗。 body{font-size:14px;line-height:1.4286} 或者合并形式 body{font:14px/1.4286 'microsoft yahei'}
line-height 與圖片高度表現。
line-height 不會影響圖片的高度。
隱匿文本節點: <p> 標簽是一個文本節點,其默認會有文本。即使 <p></p> ,也就是當內容為空時,也存在文本節點,只不過看不到而已。這樣的節點稱其為隱匿文本節點,也正因為隱匿文本節點的存在,才會造成下面圖中的情形。
如何消除圖片與底部之間的間隙?
在項目開發中,我們偶爾會遇到以下情形:

解決的辦法主要有以下三種:
1.圖片塊狀化。( vertical-align )只適用于 inline``inline-block 元素,也就是說對于 block 元素并沒有基線對齊的說辭。 img{display:block;}
2.圖片底線對齊 img{vertical-align:bottom;}
3.行高足夠小,使基線上移。 .box{line-height:0}
line-height的實際應用
1.實現大小不固定的圖片,多行文字的垂直居中

2.實現多行文本水平垂直居中

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答