2012-12-04 29 views
1

我有這樣的聲明字體速記的line-height沒有繼承上的子元素

body {font: normal .625em/1.2em Arial, sans-serif;} 

我通常會期望任何段落標記等將繼承行高,並適應那裏具體尺寸。例如

p {font-size: 2.0em} 

應具有24像素的線高度假設基地16px的瀏覽器的字體大小* 0.625 = 10px的* 20像素上2.0em = 20像素1.2em線高度爲24

奇怪的它看來是渲染只是1EM

如果我身體申報改爲

body {font: normal .625em/1.2 Arial, sans-serif;} 

忽略它正確呈現em單位。所以我想我的問題已經解決了,但是我從來沒有見過這個,並且對於這是爲什麼我很困惑。有誰知道它的原因?對不起,我無法指向我在本地創建的網站。

回答

0

當一個屬性被繼承時,繼承的值是「computed value」。這意味着如果您爲body聲明1.2em的值,那麼body字體大小乘以1.2,結果是body的任何子項將沒有設置屬性的值繼承該值。不管他們自己的字體大小是什麼。

對於line-height,有一個關於使用純(無單位)數字的特殊規則:「使用的屬性值是該數字乘以元素的字體大小。 [...]計算的值與指定值相同。「這意味着當您將值指定爲1.2時,則可以得到與1.2em一樣的body(」使用的值「)相同的線高度,但是繼承的值(「計算值」)是純數字1.2。這意味着它會乘以每個元素自己的字體大小。

士氣是line-height通常應使用純數字設置。此外,通常最好爲所有元素設置它,避免它的所有繼承,例如, * { line-height: 1.3; }。 (順便說一句,對於Arial,1.3通常優於1.2,StackOverflow使用對應於1.3的值,Arial作爲主字體,並且行高不會過多,但這取決於線長等因素。)