2014-09-06 70 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