1

この問題を説明する最良の方法は、例を提供することです。

http://jsfiddle.net/kMPDG/

基本的に、Chrome でそれを見ると、ページ 2 を過ぎてスクロールすると、ページ全体が左に移動し始め、右側にあるページ 3 が表示されます。これは Google Chrome では問題なく動作しますが、同じ例を Firefox で試すと、遷移の時点でスクロールが遅くなり、動きが鈍くなります。

イベントを調整する単純な関数を使用してスクロール関数を実行しようとしましたが、うまくいきました。その状況では、動きの鈍さはなくなりましたが、数ミリ秒のラグに置き換えられました (明らかに)。

ここで私を助けるためのアドバイスはありますか?

// 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);
});
4

1 に答える 1

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/

于 2013-08-07T11:18:48.880 に答える