2010-06-23 115 views
4

我想知道是否有任何方法可以以像素爲單位獲取div高度,儘管其高度較早設置爲100%高度。
這是必需的,因爲div內容是動態的,所以div高度根據內容本身具有不同的值。儘管其高度設置爲100%,但以高分辨率獲取div高度

[編輯] Div默認是隱藏的。

我需要以像素爲單位獲取div高度以供後期操作(平滑滾動將爲div完成)?
有沒有辦法做到這一點?

+0

你使用jQuery嗎?或者你想要一個純粹的JS解決方案? – 2010-06-23 11:40:08

+0

是的,我使用jQuery。 – Ahmed 2010-06-23 11:43:10

回答

10

既然你標記的jQuery,使用

$("#myElement").height(); 

http://api.jquery.com/height/

對於純醇」 JavaScript中,你可以使用element.clientHeightelement.offsetHeight,這取決於哪一個適合您的需求。


由於DIV是隱藏的,你將不得不 .show()它調用 .height()之前,你可以再次隱藏它立刻:

var $myEl = $('#myElement').show(); 
var height = $myEl.height(); 
$myEl.hide(); 
+0

這不起作用。 Div默認是隱藏的。 – Ahmed 2010-06-23 11:46:12

+0

element.clientHeight或element.offsetHeight返回「0」,因爲div默認爲隱藏。 – Ahmed 2010-06-23 11:47:22

+2

@Ahmed:隱藏的元素沒有「像素高度」,因此如果不先顯示元素,則無法獲得像素高度,然後再隱藏它。如果在顯示和獲取高度值後隱藏,顯示將不會更新以顯示元素。 – 2010-06-23 11:53:28

5
theDiv.clientHeight 
1

您可以使用height()

$("#divInQuestion").height(); 
1

你可以使用.height()功能:

$('#divid').height() 
0

在緩慢的瀏覽器上,顯示/隱藏方法可能會導致閃爍(儘管計算機必須非常慢)。所以如果你想避免這種情況,給div一個不透明度:0 - 甚至可能是一個位置:絕對,所以它不推動內容。所以擴展以前的代碼:

var $myEl = $('#myElement').css({"opacity": "0", "position": "absolute"}).show(); 
var height = $myEl.height(); 
$myEl.hide().css({"opacity": "", "position": ""}); 

但是再次。這可能是矯枉過正。