title属性を透過できれいに表示 | main | ブロガーのための強い検索キーワード

次の記事・前の記事ナビに擬似クラスでひと工夫

entryナビせっかくnicetitle.jsを使うので、
個別記事ページで、前の記事へ・次の記事へのリンクも、title属性付きにしたいなぁと思い、
<!-- BEGIN sequel -->
<div class="entry_navi">
{prev_entry} | {next_entry}
</div>
<!-- END sequel -->
ではなく、
<!-- BEGIN sequel -->
<div class="entry_navi">
<a href="{prev_permalink}" title="{prev_title}" >{prev_title}</a> | <a href="{next_permalink}" title="{next_title}" >{next_title}</a>
</div>
<!-- END sequel -->
を使ってみた。

entryナビでも、<<と>>がつかないので、物足りない…。
直接
<a href="{next_permalink}" title="{next_title}" class="next_entry">{next_title}>></a>
と書いてみたのですが、
そうすると、


entryナビ参照→
のように、次の記事がない、最新記事の場合、無駄に「>>」が残ってしまうんですね。。。
これってblog的にとっても不細工なので、
やっぱり独自タグ以外のものを入れるのはダメなんだ、と。
だからといって、title属性を入れるためだけの、プラグイン作る能力はまだないし、変な>>出たままあきらめたくないし…、title属性nicetitle表示をあきらめるのもイヤだし…。

というわけで、css3に手を出してみたり。
<!-- BEGIN sequel -->
<div class="entry_navi">
<a href="{prev_permalink}" title="{prev_title}" class="prev_entry">{prev_title}</a> | <a href="{next_permalink}" title="{next_title}" class="next_entry">{next_title}</a>
</div>
<!-- END sequel -->

.prev_entry:not([title=""]):before {
content:"<< ";
}
.next_entry:not([title=""]):after {
content:" >>";
}

CSS セレクタに関するおさらい 3>否定擬似クラス (Negation pseudo-class)
を参照し、notを使った否定擬似クラスで、
<a href="" title="○○○">○○○</a>
title属性のあるものは、<<や>>を表示するけど、
<a href="" title=""></a>title属性にテキストがない場合(=前/次の記事がない)は、<<や>>は出さないヨ、という指定を。

もちろんcss3なのでIE6は×です。Firefoxで確認。
今のところIE7も反応してくれてませんが、いずれはIEでも実装されるでしょう、と見込んで、まぁさいあく別に<<や>>が出ても出てなくても、blog見てる人に、めっちゃアクセシビリティ悪い、ってわけじゃないので、ブラウザの今後の発展を期待して、これで決定!しちゃいました。

(※最後になりましたが、前の記事と次の記事の間にあるblogトップに戻る「main」リンクは、サムネイルにはついてるけど、ソースサンプルでは割愛させてもらいました。)

Comments

topo | 2007/04/05 11:30 AM
safariだと文字参照を使わないと文字化けしませんでした?勘違いかな?
safariを使える環境でないので確認はとってませんが1.xと2.x共に文字化けするとかしないとか。

.prev_entry:not([title=""]):before {
content:"\00003c \00003c \000020 ";
}
.next_entry:not([title=""]):after {
content:"\000020 \00003e \00003e ";
}

Post


ご利用のブラウザ、設定ではご利用になれません。

Trackbacks

sb People | RSSパーティ | 2007/02/18 04:30 PM
概要どんどんユーザさんが増えてる「sb」……後継スクリプトのSerene Bac...