今回はJavaScript(Vanilla JS)10行でアニメーションしながらページのトップに戻れる、「トップに戻る」ボタンの実装方法を解説します。
以下、CodePenで制作したサンプルです。
See the Pen Page Top by POSIPAN (@posipan) on CodePen.
			
			Contents
			
コード解説
HTML
ボタン部分HTMLの抜粋です。ボタンはa要素で作成しています。
id属性にpage-topという値を設定しています。
<a id="page-top" href="#"><span>ページのトップに戻る</span></a>CSS
ボタン部分のCSSです。SCSSで書いています。
position: fixed;で位置を固定し、ページスクロールに追従するようにしています。
#page-top {
  position: fixed;
  bottom: 20px;
  right: 20px;
  display: block;
  width: 60px;
  height: 60px;
  background: #333;
  &:before {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -5px) rotate(45deg);
    content: "";
    width: 22px;
    height: 22px;
    border-top: 2px solid #fff;
    border-left: 2px solid #fff;
  }
  span {
    display: none;
  }
}JavaScript
scrollTopとscrollToについて少し解説します。
その他詳細はコメントをご参照ください。
// body要素のスクロール量を取得、0が返ってくる
const windowTop = document.body.scrollTop;
// #page-topを取得し、変数に代入
const pageTop = document.getElementById('page-top');
// pageTopをクリックした時の動作
pageTop.addEventListener('click', function(e) {
  // a要素のデフォルトの挙動をOFFにする
  e.preventDefault();
  
  // topで指定した位置に、behaviorで指定した動きでスクロールする
  window.scrollTo({
    top: windowTop, // 0
    behavior: 'smooth' // スムーズに
  });
});scrollTop
scrollTopは要素の一番上からのスクロール量を取得します。
今回の場合は0が返ってきます。
scrollTo
scrollToは絶対位置を指定してスクロールさせることができます。
オプションのtopプロパティにはwindowTop (0が返ってくる)を指定しているので、ページのトップまでスクロールするようになります。
さらに、behaviorプロパティにsmoothを指定し、アニメーションするようにしています。
おわりに
意外と簡単にできました!
 
											 
							
							
							
															 
							
							
							
															 
							
							
							
															 
										
					 
									
 
										
										
										
																	 
										
										
										
																	 
										
										
										
																	 
										
										
										
																	