2021.01.04

jQuery

トップへ戻るボタンをフッターの上部に表示

デモページはこちら

jQueryでフッターの高さを取得し、ユーザーがページ最下部までスクロールしても、トップへ戻るボタンをフッターよりも上部に表示します。

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

<footer>
	<div class="copyright">Copyright © Brick Plan All Rights Reserved.</div>
</footer>
<p class="toTop"><a href="#page-top">↑</a></p>

以下のCSSを設定します。クラス名toTopのpタグはopacity: 0;を設定し、クラス名is-activeを付与した時のみ表示します。フッターはPCとスマホ表示時で高さを変えます。

.toTop {
	position: fixed;
	right: 1em;
	bottom: 1em;
	pointer-events: none;
	opacity: 0;
	margin: 0;
	transition: opacity 0.5s;
}
.toTop.is-active {
	pointer-events: auto;
	opacity: 1;
}
.toTop a {
	display: flex;
	justify-content: center;
	align-items: center;
	width: 50px;
	height: 50Px;
	border-radius: 50%;
	background: #000;
	color: #fff;
	font-weight: bold;
}
footer {
	background: #000;
	padding: 3em;
}
@media screen and (max-width:768px) { 
	footer {
		padding: 2em;
	}
}
.copyright {
	text-align: center;
	color: #fff;
	font-size: 14px;
}

以下jQueryのコードです。ページのロード、スクロール、リサイズ時の動作になります。トップへ戻るボタンはブラウザの高さの半分よりもスクロール量が大きくなったタイミングで表示・非表示を切り替えます。また、ドキュメントの高さ-(ウインドウの高さ+スクロール量)がフッターの高さ以下になったらトップへ戻るボタンのCSSを変更します。フッターの高さ+調整pxの位置に配置して、フッターよりも上部に表示します。調整pxはPCとスマホ表示時で変更しています。なお、フッターの高さはpaddingも含めて取得するためinnerHeight();を使用します。

$(window).on('load scroll resize', function() {
	if($('.toTop')[0]) {
		var h = $(window).height(); //ブラウザの高さ
		var w = $(window).width(); //ブラウザの幅
		var scrollTop = $(window).scrollTop(); //実際のスクロール量

		if(scrollTop > h / 2) {
			$('.toTop').addClass('is-active');
		} else {
			$('.toTop').removeClass('is-active');
		}

		if(w < 768) {
			btm = 10;
		} else {
			btm = 20;
		}

		docsHeight = $(document).height(); //ドキュメント全体の高さ 
		scrollPosition = h + scrollTop; //ウインドウの高さ + スクロール量
		footHeight = $('footer').innerHeight(); //フッターの高さ(=止めたい位置)

		//ドキュメントの高さ-(ウインドウの高さ+スクロール量)がフッターの高さ以下になったら
		if(docsHeight - scrollPosition <= footHeight) {
			$('.toTop').css({
				'position': 'absolute',
				'bottom': footHeight + btm //bottomをフッターの高さ+調整pxに指定
			});
		} else {
			$('.toTop').css({
				'position': 'fixed',
				'bottom' : '1em'
			});
		}
	}
});

関連記事

2020.10.07

jQuery

jQueryのattrメソッド・dataメソッドで要素の属性を取得・変更・新規設定

デモページはこちら jQueryのattrメソッドとdataメソッドで要素の属性を取得・変更・新規設定します。dataメソッドはカスタムデータ属性のみ取得・変更…

2020.10.04

jQuery

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

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

2021.03.14

jQuery

jQueryのcssメソッドで要素のCSSを取得・変更

デモページはこちら jQueryのcssメソッドで要素のCSSを取得・変更します。以下のhtmlの構造でテストします。 まずCSSの変更です。対象の要素に設定さ…

2020.10.02

jQuery

jQueryのeachメソッドの使い方

デモページはこちら jQueryのeachメソッドの使い方です。eachメソッドには関数を指定します。関数の引数として「index(インデックス番号)」と「el…

2020.07.17

jQuery

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

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

上に戻る