深入理解css行高line-height

1.行高的定義

行高是相鄰兩行文本基線之間的垂直距離。看清除是基線,估計有很多前端搞了幾年的都說不出個所以然。小時候我們寫英文26個英文字母的單詞本(隨便找個圖)
在這裏插入圖片描述
一行裏面有四條線,在css中一個行內非替換元素(例如span,em等),其內容區都會存在四條假想的線,分別是底線(bottom)、基線(baseline)、中線(middle)、頂線(top),它們就類似於書寫英文時的四條線,其中兩紅色的線的垂直距離就是行高,通過換算一下,行高 = 頂線到底線的垂直距離+行間距(就是傳說中的控制兩行文字之前的垂直距離,可以分我上半行距和下半行距)。其實頂線到底線的垂直距離就是font-size的大小也可以說是內容區域(content area)。有個概念就可以,下面我會慢慢分析。

2.css boxes各種類型

先看一段代碼:

 <p>
    <em>Health</em> <span>is the most important thing </span> in the world
</p>

效果如下:
在這裏插入圖片描述
這斷代碼中設計到4種boxes:

1.containing box(包含盒子)

這個是最大的也是最外層的box,你可以把它理解爲一個段落(一個段落裏面很多行),它包含了其他的boxes。

2.line boxes(行框盒子)

剛上面說了,段落下面的就是行,一個段落是由若干行組成的。

3.inline boxes(內聯盒子)

內聯盒子不會讓內容成塊顯示,而是排成一行,像例子中的span,em就是內聯盒子,如果沒有標籤包裹的 'in the world’屬於匿名內聯盒子。多個內聯盒子就形成了行框盒子,就相當多個字組合起來就形成了行。

4.content area(內容區域)

這個上面提到過,是圍繞着文字看不見的區域box,這個區域取決font-size的大小,行高就等於文字大小+行間距。比如:line-heigt:20px,font-size:16px。算出間距4px。
在這裏插入圖片描述
那是不是inline box就和行高高度是一樣,正常情況是一樣,如果line-heigt比font-size小,那麼inline box會優先行高,再如果有替換元素(img,input等)例如img插入圖片,圖片的高度比line-height高,那麼inline box會是圖片的高度。既然知道了inline box高度,之前說過多個inline box組成line box,所以line box高度取決於內部最高的inline box,有很多種可能(line-height最高的,font-size最大的,圖片最高的)。

3.line-height的用法

,以下圖的結構爲例子來分析下面五種定義line-height方式:

在這裏插入圖片描述

1.normal

首先各個瀏覽器都有個默認的line-height(一般1.0到1.4),這個ine-height值可以理解爲固定的純數字,行高都是當前font-size乘於這個固定值。如果子代不重寫line-height的話,這個是會繼承的(下面瀏覽器默認的line-height等於1.2爲例子)。
在這裏插入圖片描述

2.inherit

繼承,這個就不用說了,默認就是inherit。

3.百分比

當父設置百分比,父的行高爲當前font-size乘於這個百分比,如果子代不重寫line-height的話,子代的行高會繼承父的行高。
在這裏插入圖片描述

4.固定長度(px,em等)

當父設置固定長度,父的行高爲當前這個固定長度(em是相對父級字體的),如果子代不重寫line-height的話,子代的行高會繼承父的行高。
在這裏插入圖片描述

5.純數字(理想的方式)

父和子的行高是font-size乘於這個純數字,line-height會隨着font-szie的值做相應比例縮放。
在這裏插入圖片描述
好了,到這裏就差不多已經說完了(如果有不對之處,歡迎指正,不勝感激!!!),歡樂的時光總是過得特別快,又到時候和大家講拜拜!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章