時給単価UP【3大特典付き】
コーディングテクニック集100選⋙

【jQuery】ページトップへ戻るボタン【フッター手前で止まる】

記事内に広告を含みます

パソ君
パソ君

フッター手前で止まる「ページトップへ戻るボタン」は
どうやって実装するの?

こんな疑問にお答えします。

よくフッター手前になったら、ページトップボタンが止まるサイトを見ますよね。

下記みたいに↓

これ実は簡単に実装できちゃいます。

ジト
ジト

すぐにできるよ!

ということで、この記事では「ページトップへ戻るボタンリンクを作成」について解説していきます!

基本的なページトップボタンの作り方は下記をどうぞ↓

【jQuery・CSS】ページトップへ戻るボタンリンクを作成【コピペOK】
この記事でわかること

・ページトップへ戻るボタンリンクを作成【jQuery】
・ページトップへ戻るボタンリンクを作成【CSS】
・ページトップへ戻るボタンリンクを作成【サンプル】

ページ内リンクのスクロール方法を調整したいなら下記記事をどうぞ↓

【CSS・jQuery】ページ内リンクのスムーススクロール作り方【コピペOK】

【jQuery】ページトップへ戻るボタン【フッター手前で止まる】

See the Pen ➂:ページトップボタン by jito-coder (@jito-coder) on CodePen.

フッター部分まで行くと、ページトップボタンが止まりますよね。

重要なコードがこちら↓

<main class="main">
    <h1 class="title">ここがページトップです</h1>
    <a href="#" class="page-top">
        <div class="page-top__arrow"></div>
    </a>
</main>
<footer class="l-footer">
    ここがフッターです
</footer>
.page-top {
    display: flex;
    justify-content: center;
    align-items: center;
    position: fixed;
    right: 30px;
    bottom: 30px;
    width: 50px;
    height: 50px;
    background-color: #000066;
    border-radius: 100%;
    cursor: pointer;
    transition: opacity .3s ease;
    z-index: 5;
}
$(function () {
    $(window).on("scroll", function () {
        scrollHeight = $(document).height();
        scrollPosition = $(window).height() + $(window).scrollTop();
        footHeight = $(".l-footer").innerHeight();
        if (scrollHeight - scrollPosition <= footHeight) {
        $(".page-top").css({
            position: "absolute",
        });
        } else {
        $(".page-top").css({
            position: "fixed",
        });
        }
    });
});

フッターあたりで止まるよう記述

$(function () {
    $(window).on("scroll", function () {
        scrollHeight = $(document).height();
        scrollPosition = $(window).height() + $(window).scrollTop();
        footHeight = $(".l-footer").innerHeight();
        if (scrollHeight - scrollPosition <= footHeight) {
        $(".page-top").css({
            position: "absolute",
        });
        } else {
        $(".page-top").css({
            position: "fixed",
        });
        }
    });
});

このコードを簡単に説明すると
「スクロール時にフッター手前まできたらページトップボタンのpositionをabsoluteに。フッターより上の場合は、ページトップボタンのpositionをfixedに」
という意味。

ページトップボタンのHTMLをどこに作成するのかで、absoluteの指定場所は変えるのが注意点。
今回はmainに対して「bottom: 30px」という指定。

【jQuery】ページトップへ戻るボタン【フッターあたりで消える

これはちょっとおまけ。自分用のメモみたいなものです!

フッターあたりで消えるページトップボタンを作成してみました。

途中から出現して、フッター部分になったら消えるという仕様。

See the Pen ➃:ページトップボタン by jito-coder (@jito-coder) on CodePen.

重要なコードがこちら↓

$(function () {
    $(window).on('load scroll', function(){
        scrollHeight = $(document).height();
        scrollPosition = $(window).height() + $(window).scrollTop();
        footHeight = $(".l-footer").innerHeight();
        if($(this).scrollTop() > 1) {
            $('.page-top').addClass('show');
            if (scrollHeight - scrollPosition <= footHeight) {
                $('.page-top').removeClass('show');
            } else {
                $('.page-top').addClass('show');
            }
        }else{
            $('.page-top').removeClass('show');
        }
    });
});

「スクロール時に、もし1pxよりウインドウの位置が上なら非表示。もし1pxよりウインドウの位置が下にあり、そしてもしフッターが見える位置より上なら表示。フッターが見える位置より下なら非表示に」

文字で説明すると難しいですね(笑)

フッター位置に来た時のif分に追加するクラスを変えれば、フッター位置で非表示になるときのアニメーションなどをカスタマイズできるかと。

ちなみに下記記事の方法と合体した感じです↓

【jQuery】ページトップへ戻るボタン【スクロール途中から表示】

【jQuery】ページトップへ戻るボタン【フッター手前で止まる】:まとめ

  • フッター手前まできたかでif文指定
  • 「fixed」から「absolute」にcssを変更させる
  • 手前で非表示にさせるやり方もある
ジト
ジト

フッター手前で止まる「ページトップ位置へ戻るボタン」はよく使うので覚えておこう!

他の記事も参考にどうぞ↓

【jQuery】ページトップへ戻るボタン【上スクロールで消えて、下スクロールで出てくる】

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA