the_category()は現在の記事が含まれるカテゴリをリンク付きで表示するためのWordPressテンプレートタグです。
ブログで比較的よく使われるなじみのあるタグです。
引数は3種類あります。
ひとつ目の引数で何も指定しなければ、デフォルトでulのliでカテゴリがマークアップされます。
また、ふたつ目の引数をmultipleにすると、親カテゴリも表示されます。
ところがこのとき、親と子が一緒のli要素の中にマークアップされてしまうようです。
(親子関係にないカテゴリの場合は別々のliになります)
親と子も別々のli要素にしたかったので、以下のようにしてみました。
1 2 3 | <ul id= "category_list" class = "cf" > <li><?php the_category( '</li><li>' , 'multiple' ); ?></li> </ul> |
上の画像のように、カテゴリの一覧を横並びのアイコンのような形に整えるCSSの一例を参考までに紹介します。
htmlコードは上記のものを使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .cf:before, .cf:after { content : "" ; display : table ; } .cf:after { clear : both ; } .cf { zoom: 1 ; } #category_list { margin : 0px ; padding : 0px ; list-style : none ; } #category_list li { display : block ; float : left ; } #category_list li a { font-size : 13px ; line-height : 1 ; color : #fff ; text-decoration : none ; display : block ; padding : 5px 8px ; margin : 0px 5px 0px 0px ; background-color : #666 ; } |
まずはliをブロック要素に変換し、これをフロートさせて横並びにします。
文字数の増減が予想されるため、liの要素の横幅は指定しません。
通常、ブロック要素は横幅を指定しなければ横幅100パーセントに伸びてしまいますが、フロートされたブロック要素の場合、内包するコンテンツにあわせて横幅が自動的に伸縮するため、この特性を生かします。
liの中にあるaタグもブロック要素に変換し、これにパディングを指定。クリックできるのが文字だけではなくてアイコン全体にします。
liをフロートさせているので、これをクリアするために親要素のulにclearfixを指定しています。
clearfixについては他の書き方もあります。以下のエントリーが参考になります。