2020.09.23

jQuery

ページ最下部でトップへ戻るボタンを表示

デモページはこちら

ユーザーがページ最下部までスクロールしたタイミングで、トップへ戻るボタンをフェードインで表示します。ボタンをクリックまたはページ最下部よりも上部へスクロールでトップへ戻るボタンをフェードアウトさせます。

トップへ戻るボタンのhtmlは以下の通りです。

<p class="toTop"><a href="#page-top">↑</a></p>

以下のCSSを設定します。クラス名toTopのpタグは非表示にします。

.toTop {
	position: fixed;
	right: 1em;
	bottom: 1em;
	display: none;
	margin: 0;
}
.toTop a {
	display: flex;
	justify-content: center;
	align-items: center;
	width: 50px;
	height: 50Px;
	border-radius: 50%;
	background: #000;
	color: #fff;
	font-weight: bold;
}

以下jQueryのコードです。ページスクロール時の動作になります。$(document).innerHeight();でブラウザの枠外に隠れた部分も含めたドキュメント(ページ全体)の高さを取得します。$(window).innerHeight();でブラウザの高さを取得します。ドキュメントの高さからブラウザの高さを引くとページ最下部までのスクロール量になります。これを実際のスクロール量と比較してif文で判定します。
なおページ最下部までのスクロール量はトップへ戻るボタンの高さを差し引いて、if文の条件が成立するように調整しています。

$(function() {
	$(window).on('scroll', function(){
		var totoph = $('.toTop').innerHeight();
		var doch = $(document).innerHeight();
		var winh = $(window).innerHeight();
		var bottom = doch - totoph - winh; //ページ最下部までのスクロール量
		if (bottom <= $(this).scrollTop()) {
			$('.toTop').fadeIn(400);
		} else {
			$('.toTop').fadeOut(400);
		}
	});
});

関連記事

2021.01.30

jQuery

ヘッダー固定時のページ内リンクスムーススクロール

デモページはこちら ページ内リンクへの移動をスムーススクロールで実装します。ヘッダーは上部に固定しています。以下のhtml構造でテストします。 ページ内リンクの…

2020.10.04

jQuery

jQueryのtextメソッド・htmlメソッドで要素を取得または変更

デモページはこちら jQueryのtextメソッドとhtmlメソッドで要素を取得または変更します。textメソッドとhtmlメソッドは機能が似ていますが細かい部…

2020.08.16

jQuery

loadメソッドでhtmlファイルを読み込み

jQueryのloadメソッドはajaxの機能を限定的にした簡易版のような位置づけで、htmlファイルを読み込んで出力するだけの機能に特化しています。空のdiv…

2020.09.06

jQuery

jQueryで発生したエラーの対処法

コンソールでjQueryのエラーが発生した場合の対処法です。エラー発生の有無はjQueryのバージョンやfull版・slim版の違いによっても異なります。1系や…

2020.07.17

jQuery

jQueryプラグイン jquery.cookie.jsの使い方

jQueryプラグイン、jquery.cookie.jsの使い方です。まず前提としてcookieはhttp通信でサーバー側からクライアント側に渡されるため、ロー…

上に戻る