2014-09-06 98 views
0

我無法獲得具有溢出的#div:滾動到動畫並向下滾動到Safari 7.0.3中div內的特定部分。Safari 7.0.3 animate ScrollTop div不工作?

它在FF,Opera,Chrome中運行得很好,但由於某些原因,我無法在Safari中使用它?有人知道爲什麼以及如何解決這個問題? 我已經嘗試將#menuContainer設置爲相對定位,並且它的工作原理很糟糕。它有時會工作,有時候不會。

CSS

#menu{ 
    position:absolute; 
    display: block; 
    right: 0; 
} 

#menuContainer{ 
    position:absolute; 
    overflow: scroll; 
    width: 350px; 
    right: 0; 
} 

HTML

<div id="menu"> 
    <div id="menuContainer"> 
     <ul> 
      <li></li> 
      <li></li> 
      <li>..... 
     <ul> 
    </div> 
</div> 

jQuery的

$("#menuContainer").animate({scrollTop: $("li:nth-child("+varJumpTo+")").offset().top}, 500); 
+0

你真的只需要先調試一下。你從'.offset()。top'得到了什麼值?你的所有元素都被找到了嗎? 'varJumpTo'是否包含您期望的值?開發者控制檯中是否有錯誤? – 2014-09-06 21:45:15

+0

控制檯中沒有錯誤,並且varJumpTo內的值是正確的。爲了簡化問題,我縮短了代碼。 .offset()。top的值不正確(技術上是正確的,因爲它在#menuContainer中的所有內容被加載之前計算位置,但對於我所需的結果不正確)。 – SquigglePad 2014-09-06 21:48:34

回答

0

好吧,我找到了解決辦法。

它似乎在Safari中最好在.animate()scollTop之後加載所有內容。因此,圍繞jQuery的加入這個工程:

$(window).load(function(){ 
    $("#menuContainer").animate({scrollTop: $("li:nth-child("+varJumpTo+")").offset().top}, 500); 
}); 

它是靠不住的作用,因爲所有所需的列表中的內容將被加載,我們計算出()的格偏差的頂部()的位置之前。

謝謝!我希望這可以幫助別人:D