Categories: html css js

CSS・HTML・JavaScriptで簡単に実装!ページトップに戻るボタンの作り方

長いページをスクロールして閲覧しているとき、「ページの一番上に戻りたい」と感じることはよくあります。そんなときに便利なのが「ページトップに戻るボタン」です。
この記事では、HTML・CSS・JavaScriptを使って、ユーザーにとって快適な「トップに戻る」ボタンを実装する方法をわかりやすく解説します。基本的なコードの書き方から、表示・非表示の制御、アニメーション効果まで、段階を追って解説しますので、初心者の方でも安心して取り組めます。


HTMLでボタンの土台を作る

まずは、ページ上に表示する「トップに戻る」ボタンのHTML構造を作成します。

<!-- トップに戻るボタン -->
<button id="backToTop">↑ Top</button>

このボタンにはIDをつけておき、CSSやJavaScriptでスタイルや機能を追加していきます。


CSSで見た目を整える

次に、ボタンの位置やデザインをCSSで指定します。一般的には画面右下に固定表示するスタイルが好まれます。

#backToTop {
position: fixed;
bottom: 40px;
right: 40px;
padding: 10px 15px;
font-size: 14px;
background-color: #333;
color: #fff;
border: none;
border-radius: 5px;
cursor: pointer;
display: none; /* 最初は非表示にしておく */
z-index: 1000;
opacity: 0.7;
}

#backToTop:hover {
opacity: 1;
}

このスタイルでは、ページ下部にスクロールしたときのみ表示されるように、初期状態ではdisplay: none;にしています。


JavaScriptでスクロール制御を追加

次に、JavaScriptでスクロール位置に応じてボタンを表示・非表示する処理、クリック時にトップへスクロールする処理を実装します。

// DOMが読み込まれた後に実行
document.addEventListener("DOMContentLoaded", function () {
const backToTopButton = document.getElementById("backToTop");

// スクロール位置を監視
window.addEventListener("scroll", function () {
if (window.pageYOffset > 300) {
backToTopButton.style.display = "block";
} else {
backToTopButton.style.display = "none";
}
});

// ボタンクリックでトップへスムーズスクロール
backToTopButton.addEventListener("click", function () {
window.scrollTo({
top: 0,
behavior: "smooth"
});
});
});

window.pageYOffsetで現在のスクロール位置を取得し、300px以上スクロールされたらボタンを表示、それ以下なら非表示にします。


より自然なアニメーションを加える

CSSとJavaScriptの組み合わせで、ボタンの表示・非表示をフェードイン・フェードアウト風に見せることもできます。以下はopacityとtransitionを活用したスタイルの例です。

#backToTop {
opacity: 0;
transition: opacity 0.4s ease;
pointer-events: none;
}

#backToTop.show {
opacity: 0.8;
pointer-events: auto;
}

JavaScriptも以下のように修正します。

window.addEventListener("scroll", function () {
if (window.pageYOffset > 300) {
backToTopButton.classList.add("show");
} else {
backToTopButton.classList.remove("show");
}
});

このようにクラスの追加・削除で表示状態をコントロールすると、より滑らかで現代的な表現になります。


レスポンシブデザイン対応も忘れずに

スマートフォンでも使いやすいように、画面サイズが小さい場合に位置やサイズを調整するCSSも追加しましょう。

@media screen and (max-width: 768px) {
#backToTop {
bottom: 20px;
right: 20px;
padding: 8px 12px;
font-size: 12px;
}
}

これでスマホでも表示崩れなく、指で押しやすいサイズのボタンになります。


実装時の注意点

  • Z-indexの設定:ボタンが他の要素の下に隠れないように、z-indexを高めに設定しましょう。
  • アクセシビリティaria-label属性を使うと、スクリーンリーダー対応になります。
<button id="backToTop" aria-label="ページトップに戻る">↑</button>

実際の動作例(HTMLファイル一式)

以下は、これまで解説した要素をまとめた簡易HTMLファイルの例です。これをそのまま保存して実行すれば動作確認できます。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>トップに戻るボタン</title>
<style>
body {
height: 2000px;
margin: 0;
font-family: sans-serif;
}

#backToTop {
position: fixed;
bottom: 40px;
right: 40px;
padding: 10px 15px;
font-size: 14px;
background-color: #333;
color: #fff;
border: none;
border-radius: 5px;
cursor: pointer;
opacity: 0;
transition: opacity 0.3s;
pointer-events: none;
z-index: 1000;
}

#backToTop.show {
opacity: 0.8;
pointer-events: auto;
}
</style>
</head>
<body>

<button id="backToTop" aria-label="ページトップに戻る">↑ Top</button>

<script>
document.addEventListener("DOMContentLoaded", function () {
const backToTopButton = document.getElementById("backToTop");

window.addEventListener("scroll", function () {
if (window.pageYOffset > 300) {
backToTopButton.classList.add("show");
} else {
backToTopButton.classList.remove("show");
}
});

backToTopButton.addEventListener("click", function () {
window.scrollTo({
top: 0,
behavior: "smooth"
});
});
});
</script>
</body>
</html>

まとめ

「トップに戻るボタン」はユーザーの利便性を高めるシンプルかつ効果的なUIパーツです。HTMLで構造を作り、CSSでスタイリングし、JavaScriptで機能を追加するという基本の流れをしっかり押さえることで、実務でも十分活用できます。さらにアニメーションやレスポンシブ対応などを加えることで、より洗練されたページに仕上げることができます。

ぜひ、あなたのWebサイトにも実装してみてください。使いやすさがアップし、訪問者にとっても親切なサイトになりますよ。

upandup

Web制作の記事を中心に、暮らし、ビジネスに役立つ情報を発信します。 アフィリエイトにも参加しています。よろしくお願いいたします。