今回はページトップボタンを例に解説しますが、ページトップでの処理とページトップ以外(スクロールした時)の処理について解説します。
つまり表示非表示以外にも使えるので、覚えておくと便利かと思います。
(有料になっていたらすいません🙇♂️)
jQueryを使ったスクロール開始でイベントを発火させる方法
今回はjQueryを使うので、jQuery本体の読み込みを忘れないようにしましょう。
jQueryを使ったことがない人はこちらの記事を参照下さい。
【初心者向け】jQueryとは?CDNを使った本体の読み込み方も分かりやすく解説
続きを見る
早速ですが、今回のポイントとなるjQueryの基本となるコードを見てみます。
$(function () {
$(window).on("scroll", function () {
if ($(this).scrollTop() > 0) {
// ページトップ以外の処理
} else {
// ページトップの処理
}
});
});
今回の、
- ページトップではページトップに戻るボタンを非表示
- スクロール開始したらページトップに戻るボタンを表示
の場合は以下のようになります。
$(function () {
$(window).on("scroll", function () {
if ($(this).scrollTop() > 0) {
// ページトップ以外の処理
$(".js-page-top").fadeIn(400);
} else {
// ページトップの処理
$(".js-page-top").fadeOut(400);
}
});
});
.js-page-top
はボタンのclass名で、ページトップ以外ではfadeIn(400)
でゆっくり表示、ページトップではfadeOut(400)
でゆっくり非表示にします。
400という数字はアニメーションのスピードで、大きくするほどゆっくりになります。
また、ページを開いた時点ではボタンは非表示にしておくので、CSSで以下のようにボタンを非表示にします。
/* 最初はページトップボタン非表示 */
.page-top {
display: none;
}
.page-top
もボタンのclass名です。
こちらがデモになります。
See the Pen
ページトップとそれ以外の処理 by junpei (@junpei-sugiyama)
on CodePen.
『最初はボタン非表示 → スクロール開始したらボタン表示 → ページトップに戻ったらボタン非表示』となります。
ある程度スクロールしてからイベントを発火させる場合
先ほどの例ではほんの少しでもスクロールしたらイベントが発火されました。
それはscrollTop() > 0
が0になっているからで、例えばここの数値を200にしたら200pxスクロールしたら処理となります。
またページトップに戻る時はページトップから200pxより上になったら非表示になります。
こちらがデモになります。
See the Pen
ページトップとそれ以外の処理(少しスクロールしてから) by junpei (@junpei-sugiyama)
on CodePen.
以上になります。