css深入理解之行高line-height


line-height的定義#

基線之間的距離

不同字體,基線位置不同

所有內聯元素的樣式表現都與行內框盒子模型有關,例如浮動的圖文環繞效果

4種行內框盒子模型#

<p>hello world<em>this is em</em></p>

上面一行普通的文字,包含了4種盒子。

四種盒子模型:
1.“內容區域”(content area)
圍繞文字看不見的盒子,內容區域的高度大小只與font-size的大小和font-family有關,在simsun宋體字體下,內容區域高度等於文字大小。

2.“內聯盒子”(inline boxes)


3.“行框盒子”(line boxes)

每一行就是一個“行框盒子”,由一個個內聯盒子組成
4.“包含盒子”(containing box)


由一行一行的“行框盒子”組成

line-height的高度機制與原理#

內聯元素的高度是由行高決定的即line-height
單行文字也有行高
問:line-height明明是兩基線距離,單行文字哪來行高,還控制了高度?
答:1.行高由於其繼承性,影響無處不在,即使單行文本也不例外;
2.行高只是幕后黑手,高度的表現不是行高,而是內容區域和行間距

內容區域的高度+行間距=行距
在simsun宋體下:
font-size=240px=內容區域的高度
字號font-size+行間距=line-height行高
半行間距

多個行框盒子的包含容器
多行文本的高度就是單行文本高度累加

line-height的不同屬性值#

line-height支持的屬性值
① normal 默認值,與瀏覽器相關,
在同一瀏覽器中也和元素字體相關(font-family),所以考慮到兼容性,實際開發時,會對行高reset,保證各瀏覽器兼容性一致
根據當前的font-size計算

line-height:1.5;

實際行高=1.5*font-size(假設是200px)=30px
em,px,rem,pt
根據font-size計算
⑤ inherit--行高繼承(input默認的行高是normal)

1.5/1.5em(150%)的區別:
--1.5是根據自己的font-size計算line-height
--1.5em是根據父級元素font-size計算,相當於繼承了父元素的line-height

經驗:
--閱讀 1.5
--網頁開發 匹配20像素(20/font-size)計算結果取大不取小

line-height與圖片的表現#

inline水平元素vertical-align默認基線對齊(基線:即字母x的下邊緣)

如何消除圖片底部間距?###

1.圖片塊狀化-無基線對齊
vertical-align屬性只對內聯,內聯塊狀元素有效
2.圖像底線對齊

img{vertical-align:bottom;}
  1. 行高足夠小-基線位置上移
.box{line-height:0;}

line-height的實際應用#

  • 圖片水平垂直居中 (ie8+)
.box{line-height:300px;text-align:center;}
.box>img{vertical-align:middle}
  • 多行文本水平垂直居中(ie8+)
.box{line-height:250px;text-align:center;}
.box>.text{display:inline-block; line-height: nomal; text-align:left;vertical-align:middle;}
  • 用line-height代替height,避免ie6/ie7的haslayout
    標題樣式:
{height:36px;line-height:36px;}

其實可以直接簡寫成:

{line-height:36px;}

還有很多沒有理解的地方。。。不開心。。。


免責聲明!

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



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