2013-08-07 72 views
0

最好的方式來描述這個問題,爲您提供一個例子:在Firefox更改.scrollLeft scroll事件原因的內部時滯

http://jsfiddle.net/kMPDG/

基本上,如果你在Chrome中看到的是,當你滾動瀏覽第2頁,應該開始將整個頁面向左移動以顯示右側的第3頁。這在Google Chrome中運行良好,但如果您在Firefox中嘗試使用相同的示例...,那麼滾動會變得緩慢而緩慢。

我試過通過一個簡單的函數來運行我的滾動功能,以節流事件,它的工作 - ish。在那種情況下,緩慢消失了,但取而代之的是幾毫秒的延遲(顯然)。

你們有沒有人得到一些建議來幫助我?

// Code included in case jsfiddle.net fails. 
$(function() { 
    $('.totheright').css({ 
     position: "absolute", 
     left: "100%", 
     width: "100%" 
    }); 
    $('#page3').css({ 
     marginTop: "40%" 
    }); 

    var page2Offset = $('#page2').offset(); 
    var page2Width = $('#page2').width(); 
    var scrollFunc = function() { 
     var scrollTop = $(window).scrollTop(), 
      scrollLeft = $(window).scrollLeft(); 
     if(scrollTop > page2Offset.top){ 
      var diff = (scrollTop - page2Offset.top) * 4; 

      if(diff > page2Width) 
       $('html, body').scrollLeft(page2Width); 
      else 
       $('html, body').scrollLeft(diff); 
     } else if(scrollLeft != 0) { 
      $('html, body').scrollLeft(0); 
     } 
    }; 

    $(window).bind('scroll', scrollFunc); 
}); 

回答

0

嘗試以下操作:

$(function() { 
var page2Offset = $('#page2').position(); 
var page2Width = $('#page2').width(); 
var scrollFunc = function() { 
    var scrollTop = $(window).scrollTop(), 
     scrollLeft = $(window).scrollLeft(); 
    if(scrollTop > page2Offset.top){ 
     var diff = (scrollTop - page2Offset.top) * 4; 

     if(diff > page2Width) 
      $('html, body').scrollLeft(page2Width); 
     else 
      $('html, body').scrollLeft(diff); 
    } else if(scrollLeft != 0) { 
     $('html, body').scrollLeft(0); 
    } 
    }; 

    $(window).bind('scroll', scrollFunc); 
}); 

工作小提琴這裏:http://jsfiddle.net/kMPDG/1/

+0

我看不到你改變什麼,看起來與我的嗎? – R4wizard

+0

我剛剛刪除了$('。totheright').css({「012」,位置:「絕對」, 左:「100%」, 寬度:「100%」 }); ('#page3')。css({margin:0;'40%'; }); – maverickosama92