2014-08-29 90 views
1

我已經通過Chrome瀏覽器設置了div的寬度爲330px,然後手動設置寬度。當我用jQuery.css('width')讀取寬度時,它返回爲329.77777767181396px。帶有浮點數或小數值的jQuery.css('寬度')

有沒有人知道爲什麼這是默認爲浮點,或不管它是什麼,而不是一個整數?

感謝

+0

我沒有完全回答你的問題,但你可以使用'Math.round()',它完美的工作 – 2014-08-29 01:31:24

+0

是的。我只是想知道翻了什麼,因爲它不習慣這樣做。 – Steve 2014-08-29 01:32:51

+0

你可以參考我發佈的答案W3C文章 – 2014-08-29 01:40:46

回答

2

你可以參考W3C規範之下,如果你真的很好奇這個

http://www.w3.org/TR/CSS21/syndata.html#length-units

當頁面呈現的浮點值四捨五入,確切值存儲在內存中並用於其子元素計算。例如,如果您的div爲105.4999px,則呈現爲105px,那麼寬度爲50%的子元素將計算爲.5 * 100.4999而不是.5 * 100。

完成這個整個的信息,他們被稱爲子像素,你可以有進一步約翰Resig的(jQuery的創建者)閱讀與子像素的問題,文章

http://ejohn.org/blog/sub-pixel-problems-in-css/

+0

感謝。當我嘗試將值保存在varchar 10字段中的用戶數據庫記錄中時,這會讓我陷入困境,因此下次登錄時它就是默認值。這只是令人費解的變化突然打破了這一點。 – Steve 2014-08-29 01:49:43

+0

好吧,它真的很安全,因爲w3c的規格說明值爲 – 2014-08-29 01:50:57

+0

是的。儘管如此,它並不是很乾淨,因爲這些.css()值最終會以'px'的形式返回。因此,對於每一個(大約25),我必須去掉'px',將原始數字轉換爲整數,執行Math.round,然後將其轉換回帶有'px'結尾的字符串。我會做的。我只是希望弄清楚改變了什麼,並將其改回來。我想我也可以增加數據庫字段長度來接受所有數字。 – Steve 2014-08-29 01:59:35