2012-03-26 32 views
2

私は10個のボタンにイメージテキストとそれぞれのホバー状態を持っています。 背景の位置、幅、高さを使用して、背景イメージのスプライトの一部とホバーの背景位置のみを表示し、ホバースタイルを表示します。 また、要素上でイメージ置換クラスを使用して、アクセス可能でインデックス可能なままにします。背景画像とのリンク

ので(測定はランダムです):それはこれを行うための良い方法である場合

[CSS]

.menu{background-image:url(path/to/sprite.png);} 
.button-1{width:200px;height:30px;background-position:0 0;} 
.button-1:hover{background-position:0 -30px;} 
.button-2{width:250px;height:30px;background-position:100px 0;} 
.button-2:hover{background-position:100px -30px;} 
/* Image Replacement Class (H5BP, @necolas && BEM) */ 
.ir{border:0;font:0/0 a;text-shadow:none;color:transparent;background-color:transparent;} 

[HTML]

<a href="someLink.html" class="menu button-1 ir">Button 1</a> 
<a href="someOtherLink.html" class="menu button-2 ir">Button 2</a> 

私が知りたいのは何です次のように異なる方法で実行する必要があります。

<a href="someLink.html"><img src="image.png" width="200" height="30" alt="Button 1"/></a>

JavaScriptを使用して、ホバー上の画像をスワップします。

アクセシビリティとロボットの面で違いはありますか?

ありがとうございます。

+2

は、私にはよさそうです。私の唯一のことは、デザインを見直して、単純に保守性のためにテキストとしてHTMLにとどまることができるかどうかを確認することです。 – chipcullen

+0

ねえ。テキストとしてHTMLにとどまることはどういう意味ですか? – Francisc

+0

私は、たとえそれらがCSSで適用された背景画像であっても、テキストを画像で置き換える必要はないと考えました。私はあなたのイメージ交換の理由を知らない - 私はただそれをすべての費用をかけて回避しようとする。メンテナンスは苦痛です。 – chipcullen

答えて

2

あなたがしていることは正しいです。そのリンクにdisplay: block;を追加することを忘れないでください。あなたができることは、実際のリンクテキストをスパンに入れてから、そのスパンを絶対に画面外に配置することです。

<a href="" title="Test link"><span>Home page</span></a> 

そして、あなたのCSSファイルで:そうのような

a > span {position: absolute; top: -10000px;} 
+2

マークアップに余分なスパンを追加するのではなく、 'text-indent:-100000px'を使うことを検討してください。 – shaunsantacruz

+0

ありがとうございます。私は通常、できるだけ余分なマークアップを追加しようとします。 '.ir'クラスはテキストを隠すため、負のテキストインデントを設定する必要はありません。 – Francisc

+0

@alpacalipsこれは確かにあなたに特別なマークアップを節約する別の可能性です。しかし、両方の技術はスパマーによって多く使用されているため、実際には検索エンジンにとって「合法」とは見なされないことに注意してください。詳細についてはこちらをご覧ください:http://luigimontanez.com/2010/stop-using-text-indent-css-trick/ フランシスコ:これが満足のいく回答であれば、それを正しいものとしてマークしてください。 –