はてなブログの見出しを目次でわかりやすく表示させる。(JSで)
jqueryを読み込む
まず目次はjsで実装するのでjqueryを読み込む必要がある。
jqueryの最新版は以下のサイトで確認できる。
以下のコードをはてなブログのhead要素に貼り付ける。 ブログの管理画面から「設定」→「詳細設定」→「head要素の追加」で貼り付けることができます。
<script src="https://code.jquery.com/jquery-3.6.1.min.js" integrity="sha256-o88AwQnZB+VDvE9tvIXrMQaPlFFSUTR+nldQm1LuPXQ=" crossorigin="anonymous"></script>
目次を自動生成するコードを書く
管理画面の「デザイン」→「カスタマイズ」→「記事」を選択して 「記事下」の設定欄に下記を入力。(コピペできます)
<script type="text/javascript"> $(function(){ var list = ""; // h2見出しを検索 $(".entry-content h2").each(function(i){ var idName = "section"+i; $(this).attr("id",idName); list += '<li><a href="#' + idName + '">' + $(this).text() + '</a></li>'; }); // h2見出しが2つ以上あったら目次を表示する if ($(".entry-content h2").length >= 2){ $("<div class='sectionList'><h2>目次</h2><ol>" + list + "</ol></div>").prependTo(".entry-content"); } // 見出しへのスクロールを滑らかにする $('.sectionList a').on("click", function() { $('html,body').animate({scrollTop: $(this.hash).offset().top}, 600); return false; }); }); </script>
しかしこちらのコードはh2見出しのみにしか対応していないため、もっと細かい設定をしたい場合は自分でコードを考える必要があります。
追記
h3の対応も含めた最終的なコードはこっちに書きましたのでこちらもチェックしてみてください