2012-02-23 53 views
1

可能重複:
Mobile Safari bug on fixed positioned button after scrollTop programmatically changed…?scrollTo()與iPad和固定件

我們試圖把一個固定的導航滾動頁面的不同部分。

我們正在使用jquery scrollTo()。

只有在ipad上,第一次點擊傳遞沒有問題,但在此之後,導航似乎被禁用。 如果我們用手滾動一下,那麼鏈接的工作就會重新開始。

下面是代碼:http://lacabaneprod.com/test/

我怎樣才能解決我的側邊欄?

回答

2

幾周前出現同樣的問題。

發生這種情況的原因是因爲「內容」獲得焦點,並點擊屏幕「點按」側邊欄後面的內容。這隻會在scrollTop屬性中使用scrollTo插件或jquery.animate時發生。

爲了解決這個問題,在scrollTo動畫之後,我們重新定位了窗口。

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

但也請記住,固定位置,不支持之前的iOS 5

+0

感謝您的回答。在尋找更優雅的東西之後,我嘗試將scrollTo應用於$('body')元素而不是封裝div。它運作良好... – scux 2012-02-27 10:49:59

0

試試這個代碼,它爲我工作:

var $fixedElement = $('#nav'); // Replace this with your "fixed" element 

$fixedElement.css({ "position": "relative" }); 
window.scroll(0, 0); 
$fixedElement.css({ "position": "fixed" }); 
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'軸 - 你的可能會有所不同)。我正在滾動設置爲'overflow:hidden'(因此'target')的'#content'div。然後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上測試,所以不知道它是如何兼容的。