Web制作でLPなどの制作について勉強していると、1ページが長いこともあるため、TOPに戻るボタンを実装する機会がよくあると思います。
今回は、HTML,CSS,JavaScriptを使ってTOPへ戻るボタンを作る方法について解説します。
HTMLコード
<a href="#" class="page-top" id="js-page-top">
<img src="./img/pagetop-img.png" alt="">
</a>
HTMLのコードはすごく簡単です。<body>タグの一番下に上記のようなコードを書きます。「href属性」に「#」を設定することでクリックした時にページの一番上にとぶようになります。
「class」にはCSSで利用するクラス名を、「id」にはJavaScriptiで使用するID名をつけてください。
<img>タグの「src」属性には、実際にトップに戻るボタンで使用する画像のパスを設定してください。
CSSコード
.page-top {
position: fixed;
right: 10px;
bottom: 10px;
opacity: 0;
visibility: hidden;
transition: opacity 0.3s, visibility 0.3s;
&.is-show {
opacity: 1;
visibility: visible;
}
}
今回は、Sassを利用して記述しています。
Sassの環境構築やメリットについては上記の記事で解説していますので、気になる方は読んでみてください。
表示させる位置の指定
position: fixed;
right: 10px;
bottom: 10px;
この部分で画面のどこにボタンを設置するかを決めています。
今回であれば「right:10px」「buttom:10px」ですので、画面の右から10px、下から10pxの位置にボタンを設置させています。
最初は見えないように設定する
opacity: 0;
visibility: hidden;
transition: opacity 0.3s, visibility 0.3s;
この部分では初期状態ではトップへ戻るボタンが画面に表示されないように設定しています。
「opacity:0」で要素を完全に透明にし、「visibility:hidden;」でクリックをしても反応しないように設定しています。
「transition」に関しては、後ほどJavaScriptで画面上部からどれくらいスクロールしたらボタンを表示させるという設定をするのですが、そのときに0.3秒かけてボタンが表示されるように設定しています。
&.is-show {
opacity: 1;
visibility: visible;
}
この.is-showクラスというクラスが与えられているときには
「opacity:1」で不透明にして実際に確認できる状態にし、「visibility:visible」でボタンをクリックしたときに反応するように設定しています。
これからJavaScriptでこの「is-show」クラスをつけ外しする方法について解説します。
JavaScriptコード
jQuery(window).on("scroll", function (e) {
if(100 < jQuery(window).scrollTop()) {
jQuery("#js-page-top").addClass("is-show");
}else {
jQuery("#js-page-top").removeClass("is-show");
}
});
jQuery(window).on(“scroll”,function(e)
まず、jQuery(window)でブラウザのウィンドウ全体を指定しています。例えば、ここでid名を指定すると、そのidが付与された部分だけになりますが、今回の場合はページ全体を指定したいので、「window」を指定します。
.on(“scroll”,function (e)の部分ではスクロールされたときのイベントを設定しています。ここが「.on”click”,function(e)」の場合にはクリックされた時のイベント設定になります。
addClass,removeClass
今回のJavaScriptは一つの「if文」で記述しています。
「if(条件){条件にあっている場合の処理} else {条件に合っていない場合の処理}」全体としてはこのような形になります。
条件の部分では「100 < jQuery(window).scrollTop()」ですので画面のTOPからスクロール位置が100pxを超えているかどうかが条件式になります。
100px以上スクロールしていた場合には、「jQuery(#js-page-top).addClass(“is-show”);」ですので、HTMLで指定した「js-page-top」のid名がついているクラスに「is-show」というクラスを付与しています。
もし、100px以上スクロールしていない場合(100px以下)の場合には、removeClassで「is-show」というクラスを取り外しています。
これによって画面TOPから100px以上スクロールされている場合にはボタンが表示されて、そうでない場合にはボタンを表示しないようになっています。
コメント