×

クリックしたときにページ内TOP、ページ最下部へジャンプ(スムーズスクロール)させる方法【jQuery】

2016年3月22日 コーディング

ジャンプ

ウェブページ内で、クリックして特定の場所にジャンプさせたい時がしばしばあります。

今回はjQueryを使ってページ内TOP、ページ内最下部へジャンプさせてみます。

さらに、スムーズスクロールを考慮して、今回はDEMOを作ってみました。

ページ内TOPへ戻るボタン

まずは、よく見かけるページ内TOPへ戻るボタンを作ってみます。

サンプルで動作を確認

DEMO1サンプルで動作を確認してください。

DEMO1

右下にTOPへ戻るボタンがあるので、画面をスクロールして、TOPへ戻るボタンをクリックするとページTOPへスクロールします。

htmlでコーディング


TOPへ戻るボタンをhtmlでコーディングします。ボタンだけなのでシンプルです。

CSSでコーディング

#pagejump_demo .scroll_button a{
    position: fixed;
    display: block;
    right:50px;
    bottom:50px;
    background: #313131;
    color:#fff;
    padding:20px;
}

position:fixedで右下にボタンを固定します。

jQueryで動きをつける





jQueryを読み込みます。

$(“a[href^=#]”).click()でaタグでフラグメント識別子(#id名)が設定されているものをクリックした時にスムーズスクロールを行うようにします。

スムーズスクロールするために必要な変数を定義します。

変数 詳細
speed スクロール開始から終わりまでの時間を設定します。
slow、normal、fastといった文字列で指定可能です。
また、ミリ秒単位で指定することも可能です。
href .attr(“href”)でクリックしたaタグのhrefで指定されている値を取得します。
target 上記のhrefに格納した値を条件式で判別して、hrefの値が#もしくは空だった場合に、htmlという文字列(つまりhtmlの開始タグの位置)をtargetに格納し、それ以外の時はそのままhref
の値をtargetに格納します。
position targetに格納した位置から、.offset().topでdocumentの上端からの距離を求めます。
positionがスクロールの終点になります。

スクロールのスピード、スクロール終点位置が求められたので、
.animate()を使って、スムーズスクロールを実現します。ちなみに、ここで指定している”swing”という値は加速・減速を加えるための関数easingの一種で、通常はlinearとswingの2種類が指定可能です(※プラグインを入れればより多くのeasingを指定できます)。

ちなみにここでreturn:falseを設定しているのは、urlに#を表示させないようにするため(リンク先に移動しないようにするため)です。

ページ内最下部へボタン

サンプルで動作を確認

DEMO2サンプルで動作を確認してください。

DEMO2

右上にあるページ下へボタンをクリックするとページ最下部へスクロールします。

htmlでコーディング


ページの一番下へボタンをhtmlでコーディングします。

CSSでコーディング

#pagejump_demo .scroll_button_btm a{
    position: fixed;
    display: block;
    right:50px;
    top:50px;
    background: #313131;
    color:#fff;
    padding:20px;
}

position: fixedで右上にボタンを固定します。

jQueryで動きをつける


$(“a[href^=#page-bottom]”).click()でaタグでhrefの値が#page-bottomものをクリックした時にスムーズスクロールを行うようにします。

TOPに戻るボタンを作るときと同じように、.animate()を使って、スムーズスクロールを実現します。

$(document).height()でページ全体のの高さを求めてscrollTopで指定します。そうすることでページの最下部へジャンプさせることが可能になります。

まとめ

いかがでしたか?

短いコードでTOP、最下部へのスムーズスクロールが実現できました。

ページ最下部へジャンプするボタンは、例えばページがとても縦長でページ最下部にだけページネーションを置いている場合や、ランディングページなどで申込フォームがページ最下部にある場合などで使えるかと思います。

関連記事