2010-08-25 78 views
0

我有一個div,它可以根據其中文本的大小具有不同的高度。當用戶將鼠標懸停在圖標上時,我使用jquery來顯示它。我希望div出現在該圖標的垂直中心。我不能使用的正常方式:基於高度的位置元素垂直中心

height: 100px; top: 50%; margin-top: -50px; 

因爲我不能指定元件的高度,由於在高度的變化。

有關我如何做到這一點的任何想法?謝謝。

+0

你能再發表一些代碼嗎?我想我有一個想法,但我不能完全理解你 – NicolasT 2010-08-25 13:56:48

回答

2

這是一個非常簡單的解決方案,應該適用於任何元素高度。

HTML:

<div class="container"> 
     <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</p> 
    </div> 

的jQuery:

var margin = $('.container').height()/2; 
$('.container').css({'margin-top' : -margin}); 

我們拿到的元素的高度,然後分成兩半。然後,我們將margin-top設置爲div的一半高度的負值。

+0

我有多個具有相同類名的div。這會繼續嗎? – Cameron 2010-08-25 14:10:37

+0

我嘗試了以下方法,但它一直提示相同的值$(「div.MoreResultsInfo」)。( function(intIndex){ var intIndex = $('div.MoreResultsInfo')。height()/ 2; $ ('div.MoreResultsInfo')。css({'margin-top':-intIndex}); alert(intIndex); }); 似乎並沒有將它存儲爲每個重複元素的唯一值 – Cameron 2010-08-25 14:35:00

+0

您在每個循環中都引用了div.MoreResultsInfo,因此它會爲div.MoreResultsInfo的所有實例提供最後一半高度的margin-top .MoreResultsInfo的實例。在每個循環中使用$(this)來設置該特定元素的margin-top。 $(文件)。就緒(函數(){ \t \t \t $( 「div.MoreResultsInfo」)。每個(函數(){ \t \t \t \t變種餘量= $(本).height()/ 2 ; \t \t \t \t $(本)的CSS({ '的margin-top':-margin}); \t \t \t}); \t \t}); – 2010-08-25 14:40:55