2012-05-08 18 views
7

私はクリック可能なリンクにイメージを変えたい場合、私は次の操作を行うことができることを知っている:空のアンカータグを持っても構いませんか?

<a href="http://twitter.com/username"><img src="icons/twitter.png" /></a> 

しかし、私は、私はホバー状態を持つことができるように、CSSの背景画像を使用することを好むだろう。私はそれが何も含まれていないアンカーリンクを持っている完全に有効だか分からない以外

<a class="twitter" href="http://twitter.com/username"></a> 

# css 
.twitter{display:block; width:16px; height:16px; background:url("twitter.png")} 

これが正常に動作します。 FFでもそうですが、Chromeはそれをうまく描画しますが、他の人が同じかどうかはわかりません。

私はちょうど、リンク内のテキストを入れて、text-indent: -9999pxでそれを隠すことができ実現が、私はvariousreasonsため、そのアプローチを言っていたことがありません。私のコードはブラウザ間で互換性がありますか?

答えて

12

それは有効だが、あなたはそこに何かを入れて、それを離れて非表示にする

font-size: 0; 

ようなものを使用しなかった場合、それが最善です。このように、誰かがCSS(スクリーンリーダーなど)を持っていない場合、彼は依然としてリンクが何であるかを伝えることができます。

Here's a great article on the subject

+3

'font-size:0;'、おそらく、 'em'単位に基づいた相対的サイズ設定は、おそらくそれによって悪影響を受けるだろう。 –

+0

@DavidThomas:http://css-tricks.com/css-image-replacement/ –

+2

や各種画像の交換技術のいずれかがある「何かのように」と述べた理由です、絶対に他の選択肢があります。 OPが「テキストインデント(text-indent)」アプローチの嫌悪感を具体的に述べていることだけです。私のコメントは単にあなた自身を批判するのではなく、代替案を提示することに過ぎませんでした。 –

2

それは完全に有効ですが、あなたがしたい場合、あなたは内部の空白を置くことができます。&nbsp

+0

ありがとう、そのことを考えていなかった:) – stephenmurdoch

7

それが基本的なアクセシビリティの原則を破るので、それは、全然OKではありません。コンテンツイメージのimgタグのalt属性を使用して指定するのと同じ方法で、背景イメージの代替テキストを指定する方法はありません。 WCAG 2.0 Guideline 1.1を参照してください。

あなたがマウスオーバーで画像を変更したい場合は、そのためのCSSやJavaScriptの技術があります。

+0

アクセシビリティについての良い点、リンクありがとう – stephenmurdoch

1

使用& nbsp;テキストとして、あなたは良いです。 Markup.tipsで

+1

私の答えの上のコメントを参照してくださいなぜそれは悪い練習です。 –

1

以上、我々は最近のiOS 8の一部のアクセシビリティのテストを行なったし、VoiceOverのは、空のリンクへのナビゲーションないことを発見しました。少なくとも非破壊空間が必要です。これがiOSのバグかどうかはわかりません。

関連する問題