トップへ戻るボタン(移動位置の指定可能)のサンプル Vanilla JS window.scrollTo スムーズにスクロールしてページのトップへ戻る シンプルなコード

目次

サンプル

See the Pen back to page top button Vanilla JS by eating2003 (@eating2003) on CodePen.

説明

Javascriptのみで脱jquery

生のJavascriptで簡単に書いてあるので、

 ・単品パーツとして扱いやすい
 ・ページ内でJSの競合が発生しにくい(複数ページにボタンを表示する場合など特に助かる)

です。さらに、

 ・デフォルトはページの最上部で停止ですが、停止位置をカスタマイズ可能。
 ・ボタンデザインはCSSでカスタマイズ可能。

JS部分

const pagetopBtn = document.querySelector('#page-top'); //ボタンを定義

//ボタンをクリックしたら
pagetopBtn.addEventListener('click', () => {

  //スクロールさせる
  window.scrollTo({
    top: 0,  //停止位置をtopからのpxで指定
    behavior: "smooth" //スクロールの"ふるまい"を指定
  });
});
コードの解説は、コメントアウトに記述しました。
便利なポイントとしては、停止位置の指定ができることだと思います。

behaviorは、
 ・auto ブラウザに依存
 ・instant アニメーションなし
 ・smooth スムーズスクロール
を指定できます。

CSS部分

/* ボタンのスタイル */
.page-top {
  /* buttonタグのリセットCSS */
  border: none;
  cursor: pointer;
  outline: none;
  padding: 0;
  appearance: none;

  /* ボタンの装飾 */
  position: fixed;
  right: 30px;
  bottom: 30px;
  z-index: 100;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background-color: #115582;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.3s ease;
}

/* 矢印のスタイル */
.page-top::before {
  content: "";
  width: 12px;
  height: 12px;
  margin-bottom: -6px;
  border-top: solid 3px #fff;
  border-right: solid 3px #fff;
  transform: rotate(-45deg);
}

/* ホバー時のスタイル */
.page-top:hover {
  transform: scale(1.1);
}
  • ブラウザによるbuttonタグのデフォルトをリセット
  • 画面右下にfixedで固定表示
  • 矢印はCSSの疑似要素で作成
  • ホバー時は少し大きくなるエフェクト

ブラウザのサポート状況

2022年4月現在は、以下のようにほとんどのブラウザでサポートされています。
しかし、インターネットエクスプローラーに対応するには、ポリフィルを読み込む必要があります。
2022.4.21時点ブラウザサポート情報 can i use .scrollTop
2022.4.21時点ブラウザサポート情報 can i use .scrollTop

その他の方法

CSSの scroll-behavior: smooth;

一番簡単にトップへスムーズにスクロールさせる方法です。しかし、デメリットもあります。

 ・メリット:CSSのみで簡単
 ・デメリット:移動位置の調整ができない
html{
  scroll-behavior: smooth;
}

JSの scrollIntoView

これもVanilla JSなので使い勝手は悪くないと思います。

 ・メリット:要素を指定して、その要素までスムーズに移動
 ・デメリット:トップへ戻る だけでよい場合、トップからの移動位置指定ができたほうが便利
let pageTop = document.getElementById('topArea'); //移動先の要素を定義
let pagetopBtn = document.getElementById('page-top'); //トップへ戻るボタンを定義

pagetopBtn.addEventListener('click', () => {
  pageTop.scrollIntoView({
    behavior: "smooth",
    block: "start",
  });
});

See the Pen .scrollIntoView Sample ScrollBack to Page Top by eating2003 (@eating2003) on CodePen.

もくじ
TOP
目次
閉じる