scrollTo()与ipad和固定元素

可能重复:
在scrollTop以编程方式更改后固定定位按钮上的移动Safari错误…?

我们正在尝试使用固定导航来滚动页面的不同部分。

我们正在使用jquery scrollTo()。

仅在ipad上,第一次单击传递没有问题,但在此之后,导航似乎被禁用。 如果我们用手滚动,甚至一点点,那么链接再次工作。

这是代码: http : //lacabaneprod.com/test/

我该如何修理侧边栏?

几个星期前进入同一个问题。

发生这种情况的原因是因为“内容”获得焦点,并且点击屏幕“点击”侧边栏后面的内容。 只有在scrollTop属性上使用scrollTo插件或jquery.animate时才会发生这种情况。

为了解决这个问题,在scrollTo动画之后,我们重新定位了窗口。

$(window).scrollTop($(window).scrollTop() + 1); $(window).scrollTop($(window).scrollTop() - 1); 

但请记住,在iOS 5之前不支持固定位置。

对于使用Ariel Flesler的LocalScroll插件遇到此问题的任何人,Arief的上述答案有效,可以通过以下方式应用:

 $(document).ready(function() { $.localScroll.defaults.axis = 'x'; $.localScroll({ target:'#content', onAfter:function(){ var xPos = window.pageXOffset; var $fixedElement = $('#menubar'); $fixedElement.css({ "position": "absolute" }); window.scroll(xPos,0); $fixedElement.css({ "position": "fixed" }); } }); }); 

在这种情况下,我有一个水平滚动的网站(因此默认为’x’轴 – 你的可能会有所不同)。 我正在滚动一个’#content’div,它设置为’overflow:hidden’(因此是’target’)。 然后所有Arief的魔法都在’onAfter:function’中。

我已经调整了这个,以便代替’window.scroll(0,0)’ – 滚动回到页面的最开头 – 它通过使用window.pageXOffset获取当前窗口滚动位置并设置变量“xPos”为此(同样,如果您在Y轴上滚动,或者甚至两者都滚动,您可能还需要使用window.pageYOffset)。 然后在’window.scroll(xPos,0)’中使用该变量 – 在y轴上我的是“0”,因为我没有在该轴上滚动。 我相信可能有不同的计算当前滚动位置的方法,但这对我来说效果最好。

当我的’overflow:hidden’元素实际上是html标签时,我最初无法完成这项工作,因此将其移至’#content’div并且它工作得很好。 我一直在iPad 3上测试,所以不知道它是如何兼容的。

试试这个代码,它对我有用:

 var $fixedElement = $('#nav'); // Replace this with your "fixed" element $fixedElement.css({ "position": "relative" }); window.scroll(0, 0); $fixedElement.css({ "position": "fixed" });