私はちょうどこれを思いつきました、それはすべての最新のブラウザで動作するようです、私はちょうどそれをテストしました(IE8/互換性、Chrome、Safari、Moz)
HTML
<img id="my_image" alt="my text" src="images/small_transparent.gif" />
CSS
#my_image{
background-image:url('images/my_image.png');
width:100px;
height:100px;}
プロの:
- 画像の代替テキストは、アクセシビリティ/seo のベスト プラクティスです
- 余分な HTML マークアップはなく、CSS もかなり最小限です。
- CSS オン/イメージ オフの問題を回避します。この問題では、「テキスト インデント」技術が依然として低帯域幅のユーザーに対してテキストを非表示にします。
私が考えることができる最大の欠点は、透明な gif しか送信しないため、CSS オフ/画像オンの状況です。
すべての画像ソースを background-image css プロパティに置き換えて、これを支援するために小さな JavaScript を作成することは可能かもしれません。ただし、これは、ブラウザーがまだ css プロパティを要素にアタッチし、それらを無視する場合にのみ機能します。これが当てはまるかどうかはわかりません。テストする必要があります。また、JavaScript ベースのテストを開発して、css がページに適用されているかどうかを確認することもできます (テスト要素の位置を確認するなど)。
ところで、スタイルシートなしで画像を使うのは誰ですか? 携帯電話か何か?
編集:
以下のコメントに基づいて...インラインスタイルhrm ...おそらく、次の<?php echo css_image('image_id','my text','image_url');?>
ようなコードを生成するようにphpヘルパー関数を作成する必要があります。
HTML
<div id="image_id" style="background-image:url('image_url')" class="image">
<img src="image_url" class="alt_text" alt="my text" />
<p>my text</p>
</div><!--/#my_image-->
次に、スタイルシートにいくつかの CSS を添付するだけです
#image_id{width:*image width*;height:*image height*}
.alt_text{position:absolute;top:0px;left:0px}
.image{display:block;background-position:left top}
.image p{position:absolute;left:-9999em}
これは私が使用している古い手法ですが、どこで見つけたかはわかりません。CSS オン/画像オフ、CSS オフ/画像オン、CSS オン/画像オンで動作します。
CSS オフ/画像オフのユーザーがアクセスすると、テキストが二重に表示されます。検索エンジンのスパイダーがアクセスすると、代替テキストと通常のテキストが表示されます。インテリジェントなスパイダーは、これが何であるかを簡単に識別できます。無害な画像置換技術です。
したがって、代替テキストが読み取られるため、この手法はスクリーン リーダーには最悪ですが、これらのユーザーは次の段落にスキップできるはず<p></p>
です。
CSSと画像の両方がオフになっている他のすべての人は、ある種のボットですよね?