このページの内容は新サイトVERSIONFIVEの「CSSロールオーバーのアクセシビリティを少し考えてみた - VERSIONFIVE」にて記事として公開されました。そちらもご覧下さい。
text-indent: -9999px; でテキストを飛ばす方法が過去のものになっています。
その代わりに、昔のように JavaScript を使って画像置換するのは今更…と思ったので CSS のみを使ってアクセシビリティを確保した画像置換方法がないか考えてみました。
画像は CSS Nite LP3 の課題のものを利用させていただいています。
下の画像の上にポインタを持ってきてみてください。
わかりやすいように2pxのボーダーと背景色を設定 (#dbdbdb) しています。
HTML で利用した画像です。
CSS の hover 時に利用した画像です。上半分が透明になっています。
<a href="#" class="viewMore">
<img src="viewmore.gif" alt="過去の記事一覧を見る" width="142" height="20" />
</a>
a.viewMore {
display: block;
width: 142px; /*画像の横幅*/
height: 20px; /*画像の縦幅*/
background: transparent url("viewmore-hover.gif") no-repeat 0 0; /*hover時の画像を読み込む*/
text-decoration: none;
}
a.viewMore:hover {
text-indent: -9999px; /*hover時だけ画像を飛ばす*/
background-position: 0 -20px; /*背景をずらす*/
}
text-indent で文字が見えなくなる。
別にimg要素が隠してくれるから、上半分透明な背景画像を用意しなくてもいいかも。
[2007-09-12T23:42:03+09:00追記] HTMLの方の画像に透過GIFを使っている場合などには必要ですね。