2011-02-01 10 views
1

私は現在、ポートフォリオのウェブサイトに上下のボタン(フローティングメニュー)を実装して、ページを一定量スクロールしようとしています。たとえば、私はダウンボタンをクリックし、100pxをスクロールし、その逆にスクロールします。jQuery Scroller質問

ボタンをクリックしたときに特定のアンカーにスクロールするのに、このコードを使用していますが、クリックしたときに設定された量のピクセルを上下にシフトするように変更したいだけです。

$(document).ready(function(){ 
    $('a[href*=#jump]').click(function() { 
     if (location.pathname.replace(/^\//,") == this.pathname.replace(/^\//,") && location.hostname == this.hostname) { 
      var $target = $(this.hash); 
      $target = $target.length && $target || $('[name=' + this.hash.slice(1) +']'); 
      if ($target.length) { 
       var targetOffset = $target.offset().top; 
       $('html,body').animate({scrollTop: targetOffset}, 1000); 
       return false; 
      } 
     } 
    }); 
}); 

HTML内の現在のリンクがある:アンカーにスクロール<a class="jump" href="#jump">Back To Top</a>

<a id="jump" href="#"></a>

私は誰かが、私はすぐに意味を知っていますが、詳細とIが必要な場合は、私を求めるだろうと仮定私が達成しようとしているものの例を提供することができます。ヘルプをいただければ幸いです。

+0

あなたのコメントにあなたが与えた例ではスクロールがアニメーション化されていることが分かりました。そこでスクロールをアニメートする方法、または – Anton

+0

乾杯のアニメーション化方法を示すコードを含むように答えを更新しました。ビッグアップンアントン:D – Ryan

答えて

2

あなたはjQueryのscrollTopスプライトを使用することができます()スクロール垂直スクロールバーを調整します。

たとえば、スクロールするボタンのIDがscrollDownButtonで、ページを100ピクセル下にスクロールしたい場合は、次のコードを使用します。

$('#scrollDownButton').click(function() { 
    var currPosition = $('body').scrollTop(); 
    $('body').scrollTop(currPosition + 10); 
}); 

scrollTop()あなたの垂直スクロールバーの現在の位置を与えるとscrollTop(value)は、指定された位置に設定します。

ページを上にスクロールする場合は、追加するのではなく現在の値から引きます。

注:スクロールバーを持つ要素を選択します。上記の例では<body>でしたが、<html>も共通の要素です。 scrollTop()もJQuery 1.2.6で実装されていますので、あなたのバージョンが十分に新しいものであることを確認してください。

更新:スクロールをアニメーション化する方法。

あなたがスクロールをアニメーション化し、それが起こるだけではなく、次のコードを使用することができますダウンやジャンプアップを見たい場合は:ライアン

ため

$('#scrollDownButton').click(function() { 
    var currPosition = $('body').scrollTop(); 
    $('body').animate({scrollTop: currPosition+100}, 'slow'); 
}) 

の更新をここでコードがありますあなたの特定のページのために。

$('document').ready(function() { 
    $('#scrollDownButton').click(function() { 
     var currPosition = $('html').scrollTop(); 
     $('html').animate({scrollTop: currPosition+100}, 'slow'); 
    }); 
}); 
+0

ありがとう、私はこれを試して、後で返答します。それを推測すると、10ピクセルアップするのと同じ方法で動作しますか? – Ryan

+0

現在の値から10を差し引いてください。 jqueryは気にしないほどスマートなので、ゼロ以下になることを心配する必要はありません。 – Anton

+0

Antonさんありがとうございます。非常に迅速な答え!初めてStackOverflowを使用して、ここでは非常に良いコミュニティ。 – Ryan

1

1つのアプローチは、jQueryのScrollToを使用し、単にオフセット量を指定することです。例えば

jQuery ScrollTo

、あなたはそれが常に同じ要素にスクロールしますが、100pxに、電気ショック療法の増分でオフセット値を変更する可能性があります。

しかし、私は...そこにこれよりもはるかに良い方法はあり想像

+0

ここに私が何を達成しようとしているウェブサイトの例がありますか? – Ryan