前置き
以前、といってもかなり昔ですが はてなブログの記事似目次を表示する方法を投稿しましたが 今回はサイドバーに表示しようとおもってやってみたので公開しておきます。
こちらは過去の記事 no-hack-no-life.hatenablog.com
前提/やること
- jQueryを使用します。
- デザインCSSを編集します。
- 記事下にjavascriptを設置します。
jQueryを設置する
ブログ上にjQueryを設置していない場合は
「管理画面」 → 「設定」 → 「詳細設定」 → 「headに要素を追加」の欄に下記のscriptタグを追記します。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
CSSを編集する
次にCSSを編集します。
「管理画面」 → 「デザイン」 へ進んで、真ん中の設定マークを選ぶと「デザインCSS」 があるのでこれを開きます。
開いたデザインCSSの欄に下記のCSSを追記して、変更を保存します。 (変更を保存せずに次に進んでも大丈夫です)
/* 目次 */ #box2-inner .indexSection { background: #F8F8F8; padding: 15px; border: 1px solid #CCC; margin-bottom: 10px; } #box2-inner .indexSection h2 { font-size: 110%; margin: 0; } #box2-inner .indexSection ol { margin: 10px 0 0; padding: 0 0 0 1.5em; list-style: decimal; } #box2-inner .indexSection ol a { text-decoration: none; }
記事下に目次を表示するjavascriptを設置する
- 「管理画面」 → 「デザイン」 へ進んで、真ん中の設定マークを選ぶと「記事」 を選びます。
- 「記事」の中の項目に「記事下」があるのでこれを開き、下記のscriptタグを貼り付けます。
<script type="text/javascript"> $(function(){ var list = ""; //大見出しを検索 $(".entry-content h2").each(function(i){ var idName = "section"+i; $(this).attr("id",idName); list += '<li><a href="#' + idName + '">' + $(this).text() + '</a></li>'; }); //大見出しが2つ以上あったらサイドバーに目次を表示する if ($(".entry-content h2").length >= 2){ $("<div class='sectionList'><h2>目次</h2><ol>" + list + "</ol></div>").prependTo("#box2-inner"); } //スクロールを滑らかにする $('.sectionList a').on("click", function() { $('html,body').animate({scrollTop: $(this.hash).offset().top}, 600); return false; }); }); </script>
変更を保存して完了です。
このブログでの見た目
以上で手順完了です!
今回結構あっさりめのCSSにしたので、みなさんお好みでアレンジしていただければと思います!
使用しているテーマによっては動作しない可能性があるので(まだ他のテーマでは検証してません・・・!)
もし不明点などあればおたずねください!
世界一わかりやすい HTML5&CSS3 コーディングとサイト制作の教科書 世界一わかりやすい教科書
- 作者:株式会社マジカルリミックス 赤間公太郎,株式会社マジカルリミックス 狩野咲,株式会社マジカルリミックス 鈴木清敬
- 出版社/メーカー: 技術評論社
- 発売日: 2019/03/01
- メディア: Kindle版