我打電話$("#foobar").css("line-height")
並恢復「正常」。如何將其轉換爲像素量?在CSS規範中定義「正常」還是瀏覽器特定?jQuery/CSS:「正常」的行高== ==?px
回答
正常實際上被稱爲abnormal
在several instances,因爲存在相當大的瀏覽器不一致性。
聲明的line-height:正常不僅 從瀏覽器有所不同的瀏覽器,這是我 此前預計,事實上,量化 這些差異是整個 點,但也從一個字體 面變化另一個,並且也可以在給定的面內變化 。
我認爲它值得提供一個鏈接回到埃裏克邁耶的網站爲您的報價來源,一個迷人的閱讀:http://meyerweb.com/eric/thoughts/2008/05/ 06/line-height-abnormal/ – 2010-09-01 01:14:45
-1,因爲這不會接近回答問題。良好的信息,但應該是一個評論。 – 2012-04-26 14:02:41
@MartinJespersen我不會刪除答案,即使現在閱讀它,我仍然認爲我的答案是正確的,因爲'normal'是瀏覽器特定的,因此,跨瀏覽器不一致,不應該轉換爲像素。這表示我非常感謝您花時間提供關於downvote的反饋,謝謝! :) – Frankie 2012-04-26 19:34:26
normal
是line-height
的有效設置,因此對於那些將返回該值的瀏覽器並沒有真正的解決方法。
或者,您可以使用.css('height')
,因爲它只會計算元素的內部部分,而不是padding/border/margin。如果你有一個多行元素,或者一個元素不僅僅是文本,它會帶來一點創意。
編輯:周圍的工作的一個例子是具有
<span id='def' style='line-height:inherit;display:none;'> </span>
的元素中,然後找到行高你可以只使用#def的.height()
因爲它總是隻有一行,因此也就是父元素的行高。
瀏覽器在Windows XP是,除非明確規定,否則在返回的jsfiddle一個normal
瀏覽器的一個例子。 Firefox返回一個像素數。 normal
是每個w3規格的初始值。 http://www.w3.org/TR/CSS2/visudet.html#propdef-line-height
顯然你提供的解決方法似乎是最好的選擇。感謝那。 – inhan 2013-10-29 20:13:05
據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-family
,font-size
,您的瀏覽器,也許你的操作系統...
更多閱讀Eric Meyers' website。
note:line-height:1em; == font-size:* any * px; – 2013-01-16 12:22:12
那麼這是否意味着「line-height:1.14em」是等價但明確的陳述? – 2013-06-12 14:54:44
我以爲,但事實並非如此。 'line-height'取決於'font-family','font-size',你的瀏覽器,也許你的操作系統......你會在[Eric Meyers的網站]上找到一些閱讀(http://meyerweb.com/埃裏克/想法/ 2008/05/06 /行高-異常/) – zessx 2013-06-12 15:14:46
精確計算像素中的法線高度很困難。雖然,根據MDN它大約1.2em。
如果您已經:
body{
font-size: 16px;
}
所以,你的網站有正常的字體大小爲16像素,然後正常的line-height將大致24px
。這意味着您可以計算正常的字體大小像素值乘以1.5
即16px * 1.5 == 24px
注意:由於px值和em值之間存在差異,所以我沒有乘以1.2。
然而,這是很久以前寫的,但幫助我在我的任務中寫下臨時解決方案。我正在複製這些代碼,而不是其他人可以使用的代碼。
$('#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);
});
- 1. 添加PX回到div高度
- 2. 身高:100%css無法正常工作
- 3. 啓用iPhone(20 PX發行)
- 4. getheight()px或dpi?
- 5. java的正則表達式來替換{VAR} PX與{VAR}次{VAR} PX
- 6. clearTimeout無法正常運行
- 7. calc()100%+ #px
- 8. 確定最高的正常形式
- 9. Photoshop px與操作系統px
- 10. 使用JTable.setRowHeight不能正常工作更改行高度
- 11. 試圖讓填充和行高正常顯示在FF
- 12. 運行不正常
- 13. CSS - currentwidth + px
- 14. python的正常行爲?
- 15. 身高:自動;工作不正常
- 16. 身高:100%無法正常工作?
- 17. jvm conf正常gc在高負載下
- 18. Div高度100%不能正常工作
- 19. Bootstrap v3.3具有不尋常的行高
- 20. 正確調整行高
- 21. Javascript:execcommand fontsize px
- 22. 變化高度在IE無法正常工作
- 23. CSS TR高度使用比例及檯面高度不工作時是在PX
- 24. Googlechart寬度和高度作爲VW而不是PX
- 25. 如何讓高度jQuery標籤內容800 px?
- 26. 調試執行工作正常,但正常的出現segfaults
- 27. CSS px VS Android dp
- 28. 如何正確更改TableView的行高?
- 29. 爲什麼我的算法降低元件的高度不正常
- 30. 是否可以在C#中打印一個半行(正常高度的1.5倍)?
您正在使用哪種瀏覽器/平臺?現場演示可能也有幫助(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
在Windows XP上的Chrome返回'normal' – Robert 2010-09-01 01:38:13