Safari 7.0.3 animate ScrollTop div不工作?
问题描述:
我无法获得具有溢出的#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);
答
好吧,我找到了解决办法。
它似乎在Safari中最好在.animate()scollTop之后加载所有内容。因此,围绕jQuery的加入这个工程:
$(window).load(function(){
$("#menuContainer").animate({scrollTop: $("li:nth-child("+varJumpTo+")").offset().top}, 500);
});
它是靠不住的作用,因为所有所需的列表中的内容将被加载,我们计算出()的格偏差的顶部()的位置之前。
谢谢!我希望这可以帮助别人:D
你真的只需要先调试一下。你从'.offset()。top'得到了什么值?你的所有元素都被找到了吗? 'varJumpTo'是否包含您期望的值?开发者控制台中是否有错误? – 2014-09-06 21:45:15
控制台中没有错误,并且varJumpTo内的值是正确的。为了简化问题,我缩短了代码。 .offset()。top的值不正确(技术上是正确的,因为它在#menuContainer中的所有内容被加载之前计算位置,但对于我所需的结果不正确)。 – SquigglePad 2014-09-06 21:48:34