Let's create! WordPressサイト制作とメンテ/エラー対応から、PHP/CSS/javascriptプログラミング、動画・音・イラスト等制作まで扱うコラム

【jquery無し・生javascript】超カンタン!スクロール後にフェードイン表示する、トップに戻るボタン実装方法

更新: 2024/04/27 2053文字

今回はweb制作でよく使われる、『スクロール後にフェードイン表示する、トップに戻るボタン』というのを実装してみます。このサイトは事情により、特定のページ以外ではjqueryを読み込んでいないので、生javascriptで書いてみました(全ページで読み込むと重くなる)。さっそく内容を確認していきましょう。

スクロール後にフェードイン表示する、トップに戻るボタンのコードについて

HTML

<div id="page-top">
 <a href="#wrapper">▲</a>
</div>

まずはHTMLを見てみましょう。このサイトについている、フッター下の『トップに戻るボタン』部分。これにはjavascriptで使うため、id属性をつけておきます(id:page-top)。それ以外は、とくに変哲もないボタンです。

CSS

#page-top {
  opacity:0;
  transition:0.7s;
  text-decoration:none;
  position: fixed;
  z-index: 9999;
  bottom: 20px;
  right:0px;
  font-size: 2em;
}
.topbtn-is-show{
  opacity:1.0 !important;
  transition:0.7s;
}

CSS上のポイントとしては、『最初はopacity:0;で透明にしておいて、あとからopacity:1.0のクラスをつけて表示』というところでしょうか。あと、両方にtransitionをかけておくと、フェードインのような効果になります。

javascript

<script>
var topbutton = document.getElementById('page-top');
window.addEventListener('scroll', function(){
 if(window.scrollY > 400 ){
  topbutton.classList.add('topbtn-is-show');
  }
 if(window.scrollY < 400 ){
  topbutton.classList.remove('topbtn-is-show');
}
});
</script>

jqueryだともうちょい短くなりますが、このくらいのコードで済みました。流れとしては
『getElementByIdでページトップボタンidをとる』
『addEventListenerでスクロールイベント補足』
『scrollYが指定数値以上でopacity:1.0つきのクラス付与』

という流れです。

逆に、上に戻したときも非表示になるように、『scrollYが指定数値以下でopacity:1.0つきのクラスを解除』というのも入れました。

表示例

このサイトにつけてみたので、操作してみます。まず、ページをロードした状態。下スクロールはまだしていません。この状態だと、opacity:0;になっているので、完全に透過して見えない状態になります。

スクリプト内の指定数値以上のスクロールをした場合は、なお『scrollY < 数値のときは、topbtn-is-showクラスを取り除く』という動作をするため、スクロールを上まで戻せば、またボタンは非表示になります。

あとがき・まとめ

  • 非表示にはopacity:0もつかえて、transitionとあわせてフェードイン/アウトみたいになる
  • addEventListenerメソッドでスクロールイベントを補足しておく
  • あとはスクロール量に応じてクラスを外したりつけたりする

まとめると、こんなところでしょうか。この機能だけのためにjquery読み込むのも微妙な感じがしたので、わりとサックリ書けてよかったです。


【カテゴリ】- javascript/jQuery、その他
【タグ】-

関連記事