有4種模型,分別是css
塊,塊盒模型 containing boxing,包括line
html
行內盒模型 inline boxing ,包含content
web
行模型 line boxing,包含inline
,line
高度是由最高的inline
元素決定.chrome
內容區域 content area瀏覽器
這部份內容能夠着重看 這裏有詳細的介紹。wordpress
由上面的內容能夠總結出line boxes
的高度取決與其下屬的inline boxes
中最高的元素。測試
對於像input這樣的元素,在不一樣瀏覽器上line-height屬性表現是不一樣,參考Line-Height Doesn’t Work As Expected On Inputsspa
行高還有一個特性,叫作垂直居中性。line-height的最終表現是經過line boxes實現的,而不管line boxes所佔據的高度是多少(不管比文字大仍是比文字小),其佔據的空間都是與文字內容公用水平中垂線的。 ----張鑫旭的博文3d
咱們常常看到一種垂直居中的方法,那就是讓height
和line-height
相同code
text-vertical{ height:30px; line-height:30px; }
其實在這裏起做用的是line-height
, 只要設置好了line-height
,在不設置height
的狀況下一個div
的高度就是他的line-height
的值
結果如圖:在chrome的測試下
line-height與line boxes高度 by wangjojo (@wweggplant) on CodePen.
在看了張鑫旭大神的博文後, 發現不使用最後的i
標籤也是能夠作到垂直居中的,多是他當時寫那篇文章的時間過久,瀏覽器的更新問題等, 在最新版本的測試下,沒必要使用i
標籤,只使用line-height
就能解決問題,若是發現舊瀏覽器不支持,能夠採用他博客中提到的方法.
多行文字居中,添加i方式 by wangjojo (@wweggplant) on CodePen.
line-height
賦值方式px/em、百分值、normal、數值、inherit繼承。px/em和inherit沒什麼好說的, normal與數值1.2等價 ,因此下面重點說說百分比和數值兩種賦值方式的區別.
line-height
百分比賦值的結果是當前line-height
的值乘以這個百分比數值獲得的.demo以下:
line-height賦值方式 by wangjojo (@wweggplant) on CodePen.
外層的 div.wrap
的 line-height
計算結果是 20px*150% = 24px
;
內部的h1
標籤和 p
標籤的經過繼承獲得 line-height:150%
而後最後的結果仍然是24px
在line-height
採用百分比的狀況下,line-height
的最終值h就是當前line-height
乘以這個百分比計算得出.而且這個值會繼承下去,後代的元素繼承獲得的值也是h
外層的 div.wrap-line-height-number
的 line-height
計算結果是 30px*1.5 = 45px
;
內部的h1
標籤和 p
標籤的經過繼承獲得 line-height:1.5
h1
的line-height
是 16px*1.5 = 24px
p
的line-height
是 12px*1.5 = 16px
能夠把line-height採用數值形式看成一種倍數的繼承, 後代的元素都會繼承這個倍數,並受這幾數值的影響,獲得最後的值
4種box模型以及各自的含義
line-height
與line box
的關係
文字垂直居中
line-height
賦值形式採用數值或者是百分比時各自的表明的含義