2010-09-01 22 views
32

我打電話$("#foobar").css("line-height")並恢復「正常」。如何將其轉換爲像素量?在CSS規範中定義「正常」還是瀏覽器特定?jQuery/CSS:「正常」的行高== ==?px

+0

您正在使用哪種瀏覽器/平臺?現場演示可能也有幫助(http://jsbin.com和http://jsfiddle.net都很好)。按照預期,Firefox 3.6.8和Chrome 6.0.472.51測試版(在Ubuntu 10.04上)都返回像素值。在SO'$('div.container').css('line-height');'返回11.2px(FF)。 – 2010-09-01 00:59:40

+1

在Windows XP上的Chrome返回'normal' – Robert 2010-09-01 01:38:13

回答

5

正常實際上被稱爲abnormalseveral instances,因爲存在相當大的瀏覽器不一致性。

聲明的line-height:正常不僅 從瀏覽器有所不同的瀏覽器,這是我 此前預計,事實上,量化 這些差異是整個 點,但也從一個字體 面變化另一個,並且也可以在給定的面內變化 。

+7

我認爲它值得提供一個鏈接回到埃裏克邁耶的網站爲您的報價來源,一個迷人的閱讀:http://meyerweb.com/eric/thoughts/2008/05/ 06/line-height-abnormal/ – 2010-09-01 01:14:45

+0

-1,因爲這不會接近回答問題。良好的信息,但應該是一個評論。 – 2012-04-26 14:02:41

+2

@MartinJespersen我不會刪除答案,即使現在閱讀它,我仍然認爲我的答案是正確的,因爲'normal'是瀏覽器特定的,因此,跨瀏覽器不一致,不應該轉換爲像素。這表示我非常感謝您花時間提供關於downvote的反饋,謝謝! :) – Frankie 2012-04-26 19:34:26

6

normalline-height的有效設置,因此對於那些將返回該值的瀏覽器並沒有真正的解決方法。

或者,您可以使用.css('height'),因爲它只會計算元素的內部部分,而不是padding/border/margin。如果你有一個多行元素,或者一個元素不僅僅是文本,它會帶來一點創意。

http://jsfiddle.net/xVBfb/

編輯:周圍的工作的一個例子是具有

<span id='def' style='line-height:inherit;display:none;'>&nbsp;</span>

的元素中,然後找到行高你可以只使用#def的.height()因爲它總是隻有一行,因此也就是父元素的行高。


瀏覽器在Windows XP是,除非明確規定,否則在返回的jsfiddle一個normal瀏覽器的一個例子。 Firefox返回一個像素數。 normal是每個w3規格的初始值。 http://www.w3.org/TR/CSS2/visudet.html#propdef-line-height

+0

顯然你提供的解決方法似乎是最好的選擇。感謝那。 – inhan 2013-10-29 20:13:05

12

this page,看來最近的瀏覽器使用line-height: normal相同的值:1.14,ID EST的font-size財產與1.14係數。

試圖與幾個瀏覽器(在Windows XP):

  • 的Chrome 21.0.1180.75
  • 火狐14.0.1
  • 的Safari 5.1.7
  • 歌劇11.64
  • IE 7
  • IE 8

編輯

我錯了,line-height取決於font-familyfont-size,您的瀏覽器,也許你的操作系統...

更多閱讀Eric Meyers' website

+0

note:line-height:1em; == font-size:* any * px; – 2013-01-16 12:22:12

+0

那麼這是否意味着「line-height:1.14em」是等價但明確的陳述? – 2013-06-12 14:54:44

+0

我以爲,但事實並非如此。 'line-height'取決於'font-family','font-size',你的瀏覽器,也許你的操作系統......你會在[Eric Meyers的網站]上找到一些閱讀(http://meyerweb.com/埃裏克/想法/ 2008/05/06 /行高-異常/) – zessx 2013-06-12 15:14:46

2

精確計算像素中的法線高度很困難。雖然,根據MDN它大約1.2em。

如果您已經:

body{ 
    font-size: 16px; 
} 

所以,你的網站有正常的字體大小爲16像素,然後正常的line-height將大致24px。這意味着您可以計算正常的字體大小像素值乘以1.516px * 1.5 == 24px

注意:由於px值和em值之間存在差異,所以我沒有乘以1.2。

0

然而,這是很久以前寫的,但幫助我在​​我的任務中寫下臨時解決方案。我正在複製這些代碼,而不是其他人可以使用的代碼。

$('#lineHeightInc') 
.click(function() { 
    var box = GetSelectedBox(); 
    var ct = box.data('LineHeight'); 
    if (isNaN(ct)) 
     ct = 0; 
    ct++; 
    box.css('line-height', (parseFloat(box.css('font-size')) * 1.61 + ct) + 'px'); 
    box.data('LineHeight', ct); 
}); 

$('#lineHeightDic') 
.click(function() { 
    var box = GetSelectedBox(); 
    var ct = box.data('LineHeight'); 
    if (isNaN(ct)) 
     ct = 0; 
    ct--; 
    box.css('line-height', (parseFloat(box.css('font-size')) * 1.61 + ct) + 'px'); 
    box.data('LineHeight', ct); 
});