はてなブログをカスタマイズしたくてHTMLとCSSの勉強をはじめたのですが、JavaScriptを覚えるともっといろんなことができるみたいで、JavaScriptの本も買いました。
はじめてのJavaScriptなので、まだ右も左もわかりませんが、ちょっとずつ勉強していきたいと思います。
ということで、今日はJavaScriptで「トップへ戻る」ボタンを作ってみました。
トップへ戻るのボタンのCSS
「管理画面」→「 デザイン」→「 カスタマイズ」 →「 デザインCSS」に下記をコピペします。
※すでに何か記述がある場合は絶対に消さないでください。
/* トップへ戻るボタン */ .moveToTop { position: fixed; bottom: 20px; right: 20px; background-color: rgba(132,177,201,.7);/* 背景色 */ padding: 15px; height: 45px; width: 45px; border: solid 1px #84b1c9; border-radius: 50%; color: #fff;/* 文字の色 */ cursor: pointer; display:none; line-height: 15px; text-align: center; box-sizing: border-box; } .moveToTop:hover { opacity: .5; }
トップへ戻るのボタンのJavaScript
「管理画面」→「 デザイン」→「 カスタマイズ」 →「フッタ」に下記をコピペします。
※すでに何か記述がある場合は絶対に消さないでください。
<button type="button" class="moveToTop"><i class="blogicon-chevron-up"></i></button> <script> window.addEventListener('scroll', function() { const button = document.querySelector('.moveToTop'); if (window.scrollY >= 500) { button.style.display = 'block'; } else { button.style.display = 'none'; } }); const button = document.querySelector('.moveToTop'); button.addEventListener('click', function() { window.scrollTo({ top: 0, behavior: 'smooth' }); }); </script>
雑感
他のサイトを見ると、aタグで「トップへ戻る」ボタンを作っているところの方が多いようでしたが、購入した書籍にはbuttonタグで作っていたのでbuttonタグを使っています。
buttonタグだと、カーソルをボタンに合わせても矢印から指さしマークに変わらないので、CSSでcursor: pointer;
を設定して要素のカーソルが合わさると指さしマークに変わるようにしました。
それから、ボタンの中のwebフォントは、はてなブログのwebフォントを利用しているので、Font Awesomeを使うよりも少し軽いと思います。
関連記事:よく使うはてなブログのWebアイコンフォント - monoのメモ帳
JavaScriptのコードのところのif (window.scrollY >= 500)
の数字を変えると、「トップへ戻る」ボタンの出てくる場所が変わります。今は500px下に行ったらボタンが出てくるようになっています。
behavior: 'smooth'
を利用すると少しゆっくりとトップへ戻ります。
「addEventListener」→イベント処理を実行するメゾット
「document.querySelector」→指定されたセレクターまたはセレクター群に一致する、文書内の最初の Element を返す