↓これが目次です↓
このブログのデザインをカスタマイズしてみた件4回目!
今までこんなんカスタイマイズしてきました。
スタイルシート関係は②のあともどんどんいじっくていてCSSの行数は倍以上に。
そのうち更新版も書きたいとは思うけどまずは新要素から。
目次があるとなんかカッコイイヨネ!
ブログによっては先頭に目次が来るじゃないですか。
あれってなんか構造的に文章書いてるみたいでカッコイイじゃないですか。
ぼくのブログにも欲しいなぁということで実装することに。
はてなブログには標準で目次機能がある
当初はプラグイン的な手法でやろうかなと思ったんですが、調べていくうちにはてなブログ自体に目次機能があると知る。
というか「見たまま」編集のツールバーに普通にいた。
これを押すと目次を埋め込むための文字が出力される。
これをこのブログのテーマで表示すると自動的に見出しのテキストが展開されてこうなる。
非常にシンプルなulの階層構造。
まあこれはこれでアリかなとは思ったんだけど、スマホ版だとmargin/paddingが余計で狭くなるうえに見づらいことが判明。
ならばデザインいじくるかということで
CSSで目次のカスタマイズをやってみる
2回目のカスタマイズでCSSいじくったのと同じようにやる。
どこに設定するとか細かいところはそちらを見て。
HTMLを読んだりCSSを書いたりするWeb開発の知識は必要なので、それらが難しい方はこのページに書いてある方法は諦めてください。
まずは目次の構造を押さえる
目次全体はブログ記事クラス「entrty-content」内のID「table-of-contents」な ul なのでこれがベースになる。
.entry-content ul.table-of-contents {
}
大見出しはこの直下の li として配置されるのでこうなる。
直下を指定する > を入れないと中見出しとかにも適用されるので注意。
.entry-content ul.table-of-contents > li {
}
中見出しは大見出しの li の中に ul として配置されるのでこうなる。
.entry-content ul.table-of-contents > li > ul {
}
.entry-content ul.table-of-contents > li > ul > li {
}
このブログは中見出しまでしか使わないのでここまでしか設定してないけど、小見出しまで使う人は同様にもう一段階追加しておくといいかも。
.entry-content ul.table-of-contents > li > ul > li > ul {
}
.entry-content ul.table-of-contents > li > ul > li > ul > li {
}
目次の先頭に「目次」ってあるとなんかイイッ!
埋め込み目次の前に普通に「目次」って書いてもいいんですが、できるだけ楽にしたいので疑似要素で埋め込むことにした。
ついでに下線なども入れたいので表示も調整。
.entry-content ul.table-of-contents::before {
content: "目次";
display: inline-block;
width: 100%;
border-bottom: 3px double #119e4d;
}
こんな感じに表示されるようになった。
下線(border-bottom)を幅いっぱいにするには display と width の設定も必要。
項目は線で区切って字下げは最小限に
スマホで見たときとにかく見づらかったんですよ。
ぼくは見出しのテキストを長めに書く傾向があるので折り返しも入ってよけいにゴチャゴチャ。
幅が狭いんで左端のリスト記号や広めの字下げも邪魔!
デザインをバッサリ変えることに。
.entry-content ul.table-of-contents {
padding: 1rem;
list-style: none;
}
.entry-content ul.table-of-contents > li {
border-bottom: 1px dashed #119e4d;
margin: 2px 0;
}
.entry-content ul.table-of-contents > li > ul {
list-style: none;
margin: 0 0 5px 0.5rem;
border-left: 1px dotted #119e4d;
}
.entry-content ul.table-of-contents > li > ul > li {
padding-left: 0.5rem;
border-bottom: 1px dotted #119e4d;
}
.entry-content ul.table-of-contents > li > ul > li:first-of-type {
border-top: 1px dotted #119e4d;
}
大した事書いてないので、細かい説明はCSS解説サイトなど見てください。
表示するとこうなる。
リスト記号が無くなって字下げも小さめになったのでスマホ版でキツキツ感出ることなくなったかな。
全体のデザインも手を入れる
目次全体のデザインはそんなに手を入れなくてもいいかなと思っていたんですが、気づいたら飾ってました。
.entry-content ul.table-of-contents {
border: 20px solid rgba(255, 255, 0, .8);
border-width: 5px 0 5px 0;
border-image: repeating-linear-gradient(-45deg, transparent, transparent 5px, #119e4d 5px, #119e4d 10px) 10 0;
box-shadow: inset 0 1px 3px 0 rgba(0, 0, 0, .2);
padding: 1rem;
list-style: none;
}
レイアウトだけなら padding と list-style だけでいいと思います。
ここまでのを全部適用したのがこれ。
過度な装飾な気もするんですがこのブログは自分が満足できれば良いのでOK!
項目テキストへのスタイル設定は注意が必要
項目のテキストは単独ページ内では見た通りの a タグなリンクなのだけど、「続きを読む」の前に目次を置いた場合はトップページでただのテキストになるので注意。
こんな感じになる。
これをChromeの開発者ツールで見るとこんな感じ。
項目のテキストにスタイルを適用したい場合は親の li に設定して、a タグ独自のスタイルのみ li > a に設定するのが安全かなと思う。
「続きを読む」を追加
トップページに全文表示されてなんだかなーって思ったんですよ。
アクセス状況見てもトップページが圧倒的で正確な分析が難しいなぁとも。
トップページは一覧だけみたいにできないのかなぁと思って調べてたらありました。
「続きを読む」が。
しかもツールバーにもいました。
目次の下に配置してみた。
こんな感じで点線が差し込まれる。
トップページでのみ「続きを読む」が出るようになる。
全文表示になっていたのでトップページは1記事のみ表示にしていたのですが、「続きを読む」を使うようになったので複数件表示できるようになりました。
はてなブログの標準機能でできるけど知らないこと他にもありそうなので、今後も面白そうな機能を発掘して適用していこうと思っています。
まとめ
目次ははてなブログの機能で埋め込めるよ!
でもシンプルすぎるからCSSで見た目をいじくるといいかも!
一度設定すればあとはツールバーのボタン押すだけで良くなるのが楽。
デザインをCSSのみにすると後から変更したいときCSSだけいじくればいいのでそういう点でも楽。
なおこの記事を書いた後も目次のCSSをいじっているのでキャプチャと違いが出ているかもしれません。
「続きを読む」を使うことでトップページの役割が向上!
トップページでは目次が概要表示機能として使えるのも嬉しいところでした。
「このブログのデザインをカスタマイズしてみた件」まとめはこちら。
アイキャッチ画像はスキマナースから使わせていただきました。