0

ページを現在の場所から 100 ピクセル下にアニメーション化するにはどうすればよいですか?

私のコードは動作しません:

    $('html,body').animate({
        scrollTop: $(window).position().top + 100
    })

このように、ページを特定の要素にスクロールせずに、代わりにウィンドウの現在の位置から 100px スクロールします。

$('html, body').animate({
scrollTop: $("#scrollToHere").offset().top
}, 2000);
4

2 に答える 2

2

scrollTop プロパティは、要素が上からどこに配置されているかを示します。window.scrollBy メソッドと window.scrollY プロパティを使用する必要があります。残念ながら、window.scrollY プロパティは読み取り専用であるため、animate を使用することはできません。

次のようなものを使用できるはずです。

function animateScrollBy (x, y, interval) {
    var xpos = 0,
    ypos = 0,
    updateScroll = function () {
        var moveX = xpos <= x ? 1 : 0,
            moveY = ypos <= y ? 1 : 0;

        window.scrollBy(moveX, moveY);
        xpos += 1;
        ypos += 1;
        if (moveX === 0 && moveY === 0) {
            clearInterval(scrollInterval);
        }

    },
    scrollInterval = null;

    scrollInterval = setInterval(updateScroll, interval||1)
}

animateScrollBy(0, 100);

速度は、移動したピクセルの量に関連しています。後で更新してみます。

于 2011-02-03T08:01:25.410 に答える
1

scrollto プラグインが思い浮かびます:
http://flesler.blogspot.com/2007/10/jqueryscrollto.html
http://demos.flesler.com/jquery/scrollTo/

しかし、それは少しやり過ぎかもしれません:)

于 2011-02-03T08:12:26.947 に答える