Result
簡易的なものなので汎用性は高くは無いかも。
jQuery
(function($) {
$.fn.toc = function(o, p) {
p = $.extend({
title: "タイトル"
}, p);
//見出しを入れるボックスを生成
this.prepend('<div id="toc-list"><strong>' + p.title + '</strong><ol></ol></div>').children(o).each(function(i) {
i = i + 1;
//IDを合わせて見出しへのページ内リンクと目次へのページ内リンクを生成
$(this).attr('id', 'section-' + i).nextUntil(o).after('<a href="#toc-list">Topへ ⇑</a>');
$('<li><a href="#section-' + i + '">' + $(this).text() + '</a></li>').appendTo('#toc-list ol');
});
};
})(jQuery);
$(function() {
$('article').toc('h3', {//目次にする要素を指定
title: "目次:"
});
});
アニメーションさせる場合は更に以下を書く。
$('#toc-list a, a[href="#toc-list"]').on("click", function() {
var hash = this.hash;
$('html,body').animate({scrollTop: $(hash).offset().top}, 600, function() {
window.location.hash = hash;
});
return false;
});
css
#toc-list {/*見出しのボックス*/
width:60%;
border:1px solid #ccc;
background-color:#efefef;
padding:5px 10px 5px 15px;
}
h3:target {/*見出しへのページ内リンクが押されたときの見出しのスタイル*/
padding:10px 15px;
}
html
<article>
<h3>Header 01</h3>
<p>text text text text text text text text text text </p>
<h3>Header 02</h3>
<p>text text text text text text text text text text </p>
<h3>Header 03</h3>
<p>text text text text text text text text text text </p>
</article>
via
via:http://www.dte.web.id/2012/07/simple-auto-table-of-content-plugin-1.html#.USYkiaXxoy0
