2013-09-05 62 views
2

我對此沒有代碼,因爲這更像是一個概念問題。在移動設備上顯示頁面之前是否可以在頁面上設置scrollTop?

我有一個jQuery的移動頁面,其內容的頂部有一段,我想放置在視口上方。我所做的是設置一個相當於本節高度的silentscroll,它使窗口滾動到我想要隱藏的部分的下方。

我現在遇到的問題是,當頁面加載並顯示到何時拋出silentscroll時,有一秒鐘的時間能夠看到要隱藏的部分,從而使頁面看起來有錯誤您可以看到100個像素的silentscroll跳轉以隱藏該部分。這顯然是因爲在顯示頁面後執行了silentscroll。

有沒有辦法將scrollTop設置爲jquery mobile,以便在頁面顯示之前執行,最好是在pagebeforeshow事件被拋出的時候執行?據我所知,這個事件是在所有的jquery移動小部件初始化之後拋出的,所以現在窗口上不能設置scrollTop?

我想要做的是在顯示頁面之前在窗口上設置scrollTop值,以便用戶不必看到頁面跳轉。

我還沒有能夠正確設置自己,我想知道如果這是事件可能。

下面是我嘗試重新創建的設置的快速圖像。綠色正方形是我想要隱藏在窗戶上方的部分。藍色框表示移動窗口,灰色框表示文檔。

enter image description here

編輯:我檢查了移動瀏覽器; safari在糾正靜音卷軸時沒有跳動/抖動。在IOS Chrome行動確實有跳/抖動,我不知道它是瀏覽器的性能問題,或者它的方式排隊DOM /視窗改變......

+2

不,我不認爲這是可能的。你可以隱藏你的html,設置scrolltop並再次顯示你的html。 – putvande

+0

Vimeo在[視頻頁面](http://vimeo.com/71370784)上具有此效果,可顯示該創建者的更多視頻。可能值得去調查一下他們是如何做到的。 – MLM

+0

Vimeo適用於臺式機,但移動設備不具備此功能。 – Prusprus

回答

3

DEMOhttp://jsfiddle.net/gnsj6/

CSS

.top { 
    height: 200px; 
    margin-top: -200px; 
} 

.container { 
    height: 1000px; 
} 

jQuery的

$('html, body').animate({ 
    scrollTop: $("#topedge").offset().top + 200 
}, 0, function() { 

    $(".top").css("margin-top","0px"); 

}); 

我不能注意到這個解決方案的任何跳轉。沒有相當大的數據(http://jsfiddle.net/gnsj6/4/

+2

這仍然會讓它跳 – putvande

+0

固定,現在它不應該跳 –

+0

是的,但這會導致另一個問題。設置了滾動頂部後。整個頁面會向下移動「200px」。 – putvande

0

添加一個隱藏頁面的類,在您設置滾動頂部刪除類後。

0

我會這樣說。 隱藏你的body(與visibility,否則你無法滾動):

.... 
<body style="visibility:hidden;">.... 

而且用jQuery做到這一點:

$(function(){ 
    $('body').scrollTop('200px').css('visibility',''); 

}); 
相關問題