text-indent: -9999px;を使って表示されているテキストを非表示にし、タグの内側を背景画像で置換するという方法について、ご紹介します。
※text-indet:-9999px=スパムというイメージを持たれる方がいらっしゃいますが、背景画像に書かれている文言と同じテキストをtext-indentで非表示にすることは問題ありません。 br>
ユーザに見えている画像の文字と全く関係のないテキストをtext-indentで非表示にすることはスパムに当たる可能性が強いので行わないようにしましょう。
HTML
2 | <a href= "#" class= "sampleButton" > |
CSS
5 | background: url( "button.gif" ) no-repeat; |
上記のように、text-indent: -9999px;を使うことで、aタグ内のテキストを画面外に飛ばし、指定された背景画像を代わりに表示させることができます。
また、要素にoverflow: hidden;を入れることで、リンクとしてクリックした際に表示される点線が画面端まで伸びる状態を防ぐことができるとともに、IE6で稀に発生する「タグの外に置換したはずのテキストが数文字表示される」というバグに対しても対処することが可能です。
また、この画像置換を行う際に気を付けたいこととして、
HTML
3 | <a href= "#" class= "sampleButton" > |
CSS
このように、画像置換を行うタグの親要素にtext-align: right;の要素が指定されていると、画像置換を行うタグにまで右寄せの要素が継承され、飛ばしたはずのテキストが表示されてしまいます。
この対処法として、
CSS
5 | background: url( "button.gif" ) no-repeat; |
サンプルページ
このように、画像置換を行う要素に対してtext-align: left;を指定することで、テキストが表示されてしまう状態に対処することが可能です。
画像置換を行う際は、これらの点に気を付けてコーディングを行ってみてください。