2011-07-28 51 views
8

我需要知道width屬性設置爲'auto'的元素的寬度(以像素爲單位)。 我已經嘗試element.style.width但沒有工作,因爲它返回'自動'。我注意到jquery函數width()返回px中的長度,但我無法使用jquery來解決此問題,因爲它在我的頁面中不可用。那麼,有沒有人知道jquery width()的等價方法?Javascript等價於jquery的寬度()

謝謝。

+1

可能相關的:快速的資源更多地瞭解所有的JS高度的(http://stackoverflow.com/questions/6826758/quick-resource-to-learn-more-有關-所有的JS-高度/ 6826798#6826798)。 – jensgram

+2

[jQuery源代碼](http://code.jquery.com/jquery-1.6.2.js)中的'getWH()'函數將顯示實現。 (調用'name =「width」'。) – jensgram

回答

2

它基本上歸結爲.offsetWidth,但由於跨瀏覽器的差異,jQuery代碼稍微複雜一些。

+1

它在各種瀏覽器中的實現方式也大不相同,所以使用像jQuery一樣經過良好測試的東西是有道理的。 – Tigraine

12

jQuery使用...

element.getBoundingClientRect().width 

在內部,它的頂部有一些其他的東西來處理瀏覽器的差異。

它返回元素呈現大小,其中.offsetxx根據框模型返回大小。

element.getBoundingClientRect() 

是獲得元素「真實」尺寸的最準確方法。

這是John Resig(jQuery的作者)在這件事上發表的一篇文章。

+0

實際上,經常是'$ el.width()'和'el.outerWidth()'給我零,而el.getBoundingClientRect()。width'給我正確的值,在最新的Firefox和Chrome上,使用jQuery 2.1.4 –