はてなブログ スクロールを滑らかにする

今回は、はてなブログの記事内スクロールを「滑らか」にする方法について紹介します。

以前紹介したような「記事の途中まで飛ばすリンク」や「目次をクリックした時のスクロール」で使えると思います。

 

名称は「スムーススクロール(スムーズスクロール)」

jQueryを追加するだけで簡単なのでチェックしてみてください。

はじめに

 

今回紹介する内容は「はてなブログのスクロールを滑らかにする方法」について。

 

スムーススクロールってやつだね!

 

リンクをクリックしたとき、ウィーンと「徐々にスクロール」するブログを見たことはありませんか。

私のブログだと「目次をクリックした時」なんかで実装してあります。

 

まずは、実際の動作を確認してください。

 

 

Point
記事内の自動スクロールを滑らかにする!

 

一瞬で切り替わるのではなく自動でスクロールした感じになるので、移動した距離や位置がわかりやすくなりますね。

見た目的にも良いので実装してみてください。

 

ちなみに、記事の途中まで飛ぶリンクを作成する方法はこちらからどうぞ。

 

 

jQueryを追加する

 

はてなブログでjQueryを使う場合、以下のようなコードを記述します。

 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>

 

このようなコードを、はてなブログの詳細設定から「headに要素を追加」にコピペしましょう。

過去にjQueryを使ったことがあり、すでに記述してある場合は不要。

 

はてなブログ 詳細設定

headに要素を追加

 

jQueryの準備はこれだけでOKです。

 

リンクを滑らかにスクロールさせよう

 

では、実際に滑らかなスクロールを実装していきましょう。

はてなブログ > デザイン > 記事下 に以下のようなコードを追加してください。

 

<script type="text/javascript">
    document.addEventListener("DOMContentLoaded", function() {
        $('.entry-content a').on('click', function() {
            $('html, body').animate ({scrollTop: $(this.hash).offset().top},600);
            return false;
        });
    });
</script>

 

スクロールを滑らかにするコードはこれだけ!

 

実際に操作してみるとこんな感じになりました。

 

 

リンクをクリックしたら滑らかに移動しましたね。

このようなスクロールは、値を変更することで「スクロール速度」や「細かい位置調整」ができるので見ていきましょう。

 

animateの値を調整しよう

 

今回使用した「animate」では以下のような設定が記述してあります。

 

  1. 「記事ページ内のリンク」をクリックしたら呼び出す
  2. 目的地の場所までアニメーションでスクロール
  3. 600ミリ秒でスクロールを完了させる

 

それぞれの値を調整することで、スクロールの完了時間オフセットを変更できます。

 

アニメーション速度を調整する

 

animateは、スクロールが完了するまでの時間を「ミリ秒」で指定できます。

試しに以下のように書き換えてみてください。

 

<script type="text/javascript">
    document.addEventListener("DOMContentLoaded", function() {
        $('.entry-content a').on('click', function() {
            $('html, body').animate ({scrollTop: $(this.hash).offset().top},100);
            return false;
        });
    });
</script>

 

「600」と書かれていた部分を「100」に変更してみました。

このようにすると「100ミリ秒(0.1秒)」でアニメーションが完了します。

 

 

スクロールが6倍速くなったね

 

アニメーション完了の値は「ミリ秒(1000で1秒)」なので、値を大きくすればゆっくりスクロールし、小さくすればスクロールが早くなります。

 

Point
animateの完了時間を自由に調整しよう!

 

スクロールの目的地を調整する

 

最後に、スクロール後の位置を調整してみましょう。

先ほどのコードに、以下のような記述を追加してみてください。

 

<script type="text/javascript">
    document.addEventListener("DOMContentLoaded", function() {
        $('.entry-content a').on('click', function() {
            $('html, body').animate ({scrollTop: $(this.hash).offset().top - 100},600);
            return false;
        });
    });
</script>

 

「top」の後ろに「-100」という処理が追加されています。

このようにすると「スクロールの目的地 - 100px」みたいな感じで、目的地より「100px上にスクロール」させることができます。

 

 

ページ上部に「追従型グローバルナビゲーション」や「ヘッダー」がある場合、目的地ぴったりに移動すると隠れてしまいますよね。

そういったときに、余裕を持たせてスクロールさせるために-100を設定してみました。

 

はてなブログのヘッダ

 

目的地より少し上でスクロールが完了したね

 

同じようにして、サイトレイアウトにあった値を指定してみてください。

 

Point
スクロールポイントのオフセットを設定しよう!

 

まとめ

 

今回紹介した方法を使うことで、はてなブログの記事内スクロールを「滑らか」にすることができました。

同じ感じで「目次」や「トップに戻るボタン」なんかにも、スムーススクロールを実装できると思うのでぜひ試してみてください。

 

 

ではまた。

 

過去にレビューしたアイテム