2014-01-13 117 views
0

當滾動大於145px時,我有一個元素會變得固定,然後在滾動< 145px時變得不固定。Android設備上固定元素的延遲滾動位置

它在桌面上運行良好,但它似乎在移動設備上反應較慢。在Android上,固定元素一直保持固定到頁面頂部,延遲約2秒,然後移動瀏覽器意識到它距離頂部小於145px。

如何阻止延遲?

jQuery的

$(window).scroll(function() { 
    if ($(this).scrollTop() > 145) { 
     if ($("#latestWrapper").css('position') !== 'fixed') { 
      $("#latestWrapper").css("position", "fixed"); 
      $("#latestWrapper").css("top", "0px"); 
     } 
    } else { 
     if ($("#AddFixedLatest").css('position') !== 'static') { 
      $("#latestWrapper").css("position", "absolute"); 
      $("#latestWrapper").css("top", "145px"); 
     } 
    } 
}); 

CSS

div#latestWrapper { 
    height:50px; 
    top:145px; 
    width:100%; 
    pointer-events:none; 
    text-align:left; 
    z-index:1; 
    position:absolute; 
    -webkit-transform: translateZ(0); 
    -webkit-perspective: 1000; 
    -webkit-backface-visibility: hidden; 
} 

幫助表示讚賞。

+0

手機比臺式機處理速度慢嗎? – mituw16

+0

@ mituw16我認爲這與移動設備使用觸摸滾動的方式有關。 – UzumakiDev

+0

你可能想看看Jquery Mobile。 – Cam

回答

0

這是一個可能的修復。不知道這是否會奏效。它實際上會要求您每隔幾秒檢查一次自己的大小。不知道這是否會奏效。試一試。

var delay = (function(){ 
    var timer = 0; 
    return function(callback, ms){ 
    clearTimeout (timer); 
    timer = setTimeout(callback, ms); 
    }; 
})(); 

$(window).scroll(function() { 
    delay(function(){ 
if ($(this).scrollTop() > 145) { 
    if ($("#latestWrapper").css('position') !== 'fixed') { 
     $("#latestWrapper").css("position", "fixed"); 
     $("#latestWrapper").css("top", "0px"); 
    } 
} else { 
    if ($("#AddFixedLatest").css('position') !== 'static') { 
     $("#latestWrapper").css("position", "absolute"); 
     $("#latestWrapper").css("top", "145px"); 
    } 
} 
}, 100); 
}); 
+1

這會在每次窗口滾動時強制滾動評估自己。我認爲這可能會奏效...... IT值得一試。 – Cam

+0

謝謝,我會給它一個旋轉:) – UzumakiDev

+0

恐怕它沒有工作:/謝謝你的努力,雖然。 – UzumakiDev