WordPressテーマ「Cocoon」のカスタマイズ備忘録です。今回はCocoonに標準で備わっている「目次」のデザインをカスタマイズしていきたいと思います。
開閉させる時にうぃーんとアニメーションさせてみました。完成するとこのようになります↓
アニメーションなしのシンプルタイプから紹介していきますので、お好きな部分を参考にしていただければと思います。
ではいってみましょう!
アニメーションなしのシンプルカスタマイズ
まずはアニメーションなしのバージョンです。目次を開いたままで開閉させない方はこちらをお使いください。
以下のCSSを追加するだけです。
- CSS
- .toc {
- border: 1px solid #666; /*全体の枠線の色*/
- font-size: 0.9em;
- line-height: 1.5;
- padding: 0;
- margin-bottom: 1em;
- display: block; /*横幅いっぱいに広げる*/
- }
- .toc-title {
- background: #666; /*目次タイトルの背景色*/
- color: #fff; /*目次タイトルの文字色*/
- font-size: 1.1em;
- text-align: center;
- padding: 6px 16px;
- }
- .toc-title::before {
- font-family: FontAwesome;
- content: '\f0ca'; /*目次タイトルのアイコン*/
- margin-right: 0.5em;
- }
- .toc-content {
- padding: 8px;
- }
上記のCSSでこのようになります↓
「この記事の目次」というタイトル部分は「Cocoon設定 > 目次 > 目次タイトル」で設定した内容が反映されます。
またアイコンはFontAwesomeで表示していますが、必要ない方は16〜20行目の以下のコードを全て削除してください。
- CSS
- .toc-title::before {
- font-family: FontAwesome;
- content: '\f0ca'; /*目次タイトルのアイコン*/
- margin-right: 0.5em;
- }
他のアイコンにしたい方はFontAwesomeのサイトで好きなアイコンを選べます。
中央寄せにしたい場合
幅いっぱいに広げずに中央寄せにしたい場合は、先ほどのコードの最初の部分をこのように変更します。
- CSS
- .toc {
- border: 1px solid #666;
- font-size: 0.9em;
- line-height: 1.5;
- padding: 0;
- margin-bottom: 1em;
- display: table;
- margin-left: auto;
- margin-right: auto;
- }
変更点は「display: block;」を「display: table;」に戻したのと、「margin-left: auto;」、「margin-right: auto;」を追加しています。
「margin-bottom: 1em;」もあるので、全部まとめて「margin: 0 auto 1em auto;」と書くこともできます。まとめる場合は左側から「上(0)、右(auto)、下(1em)、左(auto)」の指定になります。
するとこんな感じで幅は中身によって変わり、中央に配置されます。
中身のデザインをカスタマイズ
次に目次の各見出しのデザインを少しいじってみましょう。先ほどのCSSの下にこのコードを追加します↓
- CSS
- .toc ul li a, .toc ol li a {
- display: block;
- border-bottom: 1px dashed #666; /*h3以下の下側ボーダー*/
- margin-left: -20px;
- padding-left: 20px;
- }
- .toc ul.toc-list>li, .toc ol.toc-list>li {
- margin-top: 1em;
- }
- .toc ul.toc-list>li>a, .toc ol.toc-list>li>a {
- border-bottom: 2px solid #666; /*h2の下側ボーダー*/
- font-weight: bold;
- }
上記CSSが反映されるとこうなります↓
各見出しにボーダーを引いたり、h2の見出しだけ「font-weight:bold;」で太字にしたりしています。色などお好みで変えてくださいね。
アニメーションを入れてみる
次は開閉をアニメーションさせるバージョンです。Cocoonで設定できる「目次切り替え」は使いませんので、チェックは外した状態にしておいてください↓
最初はCSSだけでアニメーションさせようとしたんですが、Cocoonのコードと相性が悪いのか上手く動かなかったので今回はjQueryで動かします。
jQueryのコードを追加する
と言ってもCSSと同じようにコードをコピペするだけなので簡単です。子テーマで「テーマの編集」画面を開いたらスタイルシートではなく「javascript.js」を開きます↓
開けたらこちらのコードを追加します↓
- Javascript
- ( function( $ ) {
- $(function(){
- $(".toc-title").click(function(){
- $(this).toggleClass("active").next().slideToggle(200);
- });
- });
- } )( jQuery );
ちなみに前後に「<script></script>」などは必要ないので、上記コードをそのままコピペしてもらって大丈夫です。
4行目の後半「slideToggle(200)」の数字を変えるとアニメーションのスピードを変えることができ、数字が大きくなるほど遅くなります。
CSSを追加する
最後にCSSで「開く」「隠す」などを表示します。追加するCSSはこちらです↓
- CSS
- .toc-content {
- padding: 8px;
- display: none;
- }
- .toc-title::after {
- content: '[開く]';
- margin-left: .5em;
- cursor: pointer;
- font-size: .8em;
- }
- .toc-title.active::after {
- content: '[隠す]';
- }
最初の「.toc-content」は先ほどのアニメーションなしのCSSでも使っていますが、「display: none;」を追加して最初は目次を非表示にしています。
「content: ‘[開く]‘;」「content: ‘[隠す]‘;」の赤字部分は好きな文字に変更できるのでお好みでどうぞ。
上記はページ読み込み時に目次が閉じている状態になりますが、最初から開いている状態にする場合はこうなります↓
- CSS
- .toc-title::after {
- content: '[隠す]';
- margin-left: .5em;
- cursor: pointer;
- font-size: .8em;
- }
- .toc-title.active::after {
- content: '[開く]';
- }
最初に隠す必要がないので「.toc-content」の「display: none;」は必要ありません。
それと「開く」「隠す」の場所を入れ替えます。クリックした時に「.active」のclassが付与されるので、そのclassを使って「隠す」から「開く」に変えるという処理になっています。
ということで今回は目次のカスタマイズでした!誰かの参考になれば幸いです。
ではまた〜♪
comment
こんにちは!いつも参考にさせていただいています。
今回こちらの目次のカスタマイズを使ってみたんですが、「目次の中身のカスタマイズ」を追加CSSに入力すると、追加CSSでカスタマイズした設定が反映されなくなります。
この目次のカスタマイズぜひさせていただきたいんですが、なぜできないのかはわかりませによね?
「外観 > カスタマイズ > 追加CSS」のところにコードを記載されているのでしょうか?
目次に関係ない部分まで反映されなくなる場合は、コピーの際に間違って一部を選択していないとか、コードが間違っている可能性もあるかと思います。
または子テーマをお使いなら追加CSSではなく「外観 > テーマの編集 > スタイルシート」を開いて子テーマのstyle.cssにコードを記載してみるとどうでしょうか?
カスタマイズ記事ありがとうございました!早速利用させていただいてます。
該当ブログ:https://xn--p8jr1134aesi91ie13c.com/
ここで質問なのですが、h3,h4のトップは「1、2、3」の数字ではなくピリオドにしたいのですが、どこを触ればいいでしょうか?
よろしくお願いします。
かじりんごさま、コメントありがとうございます!
h3以下を黒丸にする場合は以下のコードを追加してください。
.toc ul li, .toc ol li { /*h3以下の指定*/
list-style-type: disc; /*discは黒丸の指定*/
}
.toc ul.toc-list>li, .toc ol.toc-list>li { /*h2の指定*/
list-style-type: decimal; /*decimalは数字の指定*/
}
「list-style-type」で他にも色々と変えられますのでお試しください。
出来ました!
神対応感謝します。
私もcocoonを使い始めたのですが、知識が無いのでてんやわんやです。
このような記事があると本当に助かります。
今後も記事更新応援しています。