ページトップへスムーズに戻るボタンの解説ですが、今回はアニメーションの仕方が少し変わっています。
このボタンは[前回の記事]でも解説しましたが、今回解説するものはアニメーションが全く違い、アニメーションの終了時に特徴があります。
始めに完成デモをご覧ください。
完成デモ
ある程度スクロールすると、右からボタンが出現しボタンをクリックするとページのトップへ移動し、移動が完了するとボタンが右へ去っていくことが確認できます。
前回の記事との違いはボタンの出現・消滅の仕方であり、前回ではフェードイン・フェードアウトでしたが、今回はanimate関数によるrightプロパティの操作としています。
続いて各ソースコードの確認です。 始めにHTMLです。
HTML
HTMLはボタンのみです。
次にCSSです。
CSS
body { background: #dfdfdf; height: 5000px; width: 100%; } .backtotop { background: #aaa; border-radius: 50%; display: block; height: 44px; line-height: 44px; position: fixed; right: -60px; bottom: 10px; text-align: center; width: 44px; } i { color: #fff; }
ボタンである.backtotop
を、position:fixed;
とright:-60px;
、bottom:10px;
と指定することで、画面右の外に隠し固定配置しています。
最後にjQueryです。
jQuery
$(function() { var topBtn = $('.backtotop'); $(window).scroll(function() { if ($(this).scrollTop() > 300) { topBtn.stop().animate({ 'right': '10px' }, 200, 'linear'); } else { topBtn.stop().animate({ 'right': '-60px' }, 200, 'linear'); } }); topBtn.bind('click', function(event) { event.preventDefault(); $('body,html').stop().animate({ 'scrollTop': 0 }, 1000, 'easeInQuart', function() { topBtn.stop().animate({ 'right': '-60px' }, 1000, 'easeInQuart'); }); }); });
スクロール量が300pxを超えると、animate関数によって右からボタンが出現します。300px未満となると元の位置に戻ります。
$(window).scroll(function() { if ($(this).scrollTop() > 300) { topBtn.stop().animate({ 'right': '10px' }, 200, 'linear'); } else { topBtn.stop().animate({ 'right': '-60px' }, 200, 'linear'); } });
出現したボタンをクリックすると、'scrollTop': 0
によってページの先頭に戻ります。
topBtn.bind('click', function(event) { event.preventDefault(); $('body,html').stop().animate({ 'scrollTop': 0 }, 1000, 'easeInQuart',
更に続けて処理を記述することで、ページの先頭に戻った後の処理を行なわせることができます。ここでは先程のスクロール量によるアニメーションと同じく、右へ去っていくような処理を施しています。
, function() { topBtn.stop().animate({ 'right': '-60px' }, 1000, 'easeInQuart'); });
以上です。