理解css中的line-height

龍恩0707發表於2015-08-08

在css中,line-height有下面五種可能的值:我們來看看w3c中列出如下可能值:

normal:預設,設定合理的行間距。

number:設定數字,此數字會與當前的字型尺寸相乘來設定行間距。

length: 設定固定的行間距。

%: 基於當前字型尺寸的百分比行間距。

inherit:規定應該從父元素繼承line-height屬性的值。

下面我們分別來看看上面五種具體介紹:

一:百分比(%):

比如如下HTML程式碼:

<h1>我是龍恩</h1>

<p>我是中國人</p>

<div>我愛自己的祖國</div>

然後我在css中定義如下:

   *{margin:0;padding:0;}

body {font-size:30px;line-height:120%;}

h1 {font-size:24px;}

p {font-size:20px;}

div {font-size:18px;}

那麼上面的body的line-height = 30px * 120% = 36px; 因此body的子元素都會繼承body的line-height;除非本身定義line-height覆蓋;因此:

h1 {line-height:36px;}

P {line-height:36px;}

Div {line-height:36px;}

二:長度(length):

Html程式碼還是如上的,css程式碼改成如下:

*{margin:0;padding:0;}

body {font-size:30px;line-height:20px;}

h1 {font-size:24px;}

p {font-size:20px;}

div {font-size:18px;}

在body元素設定line-height為20px,那麼後代的子元素都會繼承該20px,因此:

h1{line-height:20px;}

P{line-height:20px;}

Div{line-height:20px;}

但是我們可以更改自身的line-height;

三:normal 

line-height被設定為normal(約為1.2);如下程式碼:

*{margin:0;padding:0;}

body {font-size:20px;line-height:normal;}

h1 {font-size:30px;}

p {font-size:25px;}

div {font-size:20px;}

Css程式碼如上:計算如下:

body{line-height = 約20px * 1.2 = 24px}

h1{line-height = 約30px * 1.2 = 36px}

P {line-height = 約25px * 1.2 = 30px}

div{line-height = 約20px * 1.2 = 24px}

四:純數字

line-height被設定為純數字1.5,比如如下程式碼:

*{margin:0;padding:0;}

body {font-size:20px;line-height:1.5;}

h1 {font-size:30px;}

p {font-size:25px;}

div {font-size:20px;}

此數字會與當前的字型尺寸相乘來設定行間距; 那麼各個元素的line-height變為如下:

Body{line-height = 20px * 1.5 = 30px;}

H1 {line-height = 30px * 1.5 = 45px;}

P {line-height = 25px * 1.5 = 37.5px;}

Div {line-height= 20px * 1.5 = 30px;}
那麼什麼是行高呢?行高是指文字行基線間的垂直距離。如下理解:

從上到下四條線分別是頂線,中線,基線和底線;任意兩條相同顏色的垂直距離就是我們說的行高;

理解行高,行距與半行距

行距:指一行底線到下一行頂線的垂直距離,如下圖所示:

半行距:是行距的一半,即區域3垂直距離/2 ,區域1,2,3,4的距離之和為行高,而區域1,2,4距離之和為字型大小,半行距 = (行高 -  字型size)/2

行高:如下圖任意兩條相同顏色的垂直距離就是行高。在應用到一個塊級元素時,它定義了該元素的基線之間的最小距離而不是最大距離,line-height與font-size的計算值之差分為兩半,分別加到一個文字行內容的頂部和底部。所以如果在設計稿上標註的margin-top: 20px的話,如果line-height:24px; font-size:16px的話,那麼margin-top的計算方法等於 = 20 - (24 - 16)/2 = 16px;

如下圖所示:

相關文章