可能重复:
Mobile Safari bug on fixed positioned button after scrollTop programmatically changed…?
我们正在尝试使用固定导航滚动页面的不同部分。
我们正在使用jquery scrollTo()。
仅在ipad上,第一次点击传递没有问题,但在此之后,导航似乎被禁用。 如果我们用手滚动,甚至一点点,那么链接再次工作。
以下是代码:http://lacabaneprod.com/test/
如何修复侧边栏?
答案 0 :(得分:2)
几个星期前遇到同样的问题。
发生这种情况的原因是因为“内容”获得了焦点,并且点击屏幕会“点击”侧边栏后面的内容。只有在scrollTop属性上使用scrollTo插件或jquery.animate时才会发生这种情况。
为了解决这个问题,在scrollTo动画之后,我们重新定位了窗口。
$(window).scrollTop($(window).scrollTop() + 1);
$(window).scrollTop($(window).scrollTop() - 1);
但请记住,在iOS 5之前不支持固定位置。
答案 1 :(得分:1)
对于使用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上测试,所以不知道它是如何兼容它的。
答案 2 :(得分:0)
试试这段代码,它对我有用:
var $fixedElement = $('#nav'); // Replace this with your "fixed" element
$fixedElement.css({ "position": "relative" });
window.scroll(0, 0);
$fixedElement.css({ "position": "fixed" });