Edition for Web Developers — Last Updated 17 December 2024
source
、img
およびlink
要素の共通属性単独の画像リソースのみが存在する場合、HTMLにおいて画像を埋め込むために、img
要素およびsrc
属性を使用する。
< h2 > From today's featured article</ h2 >
< img src = "/uploads/100-marie-lloyd.jpg" alt = "" width = "100" height = "150" >
< p >< b >< a href = "/wiki/Marie_Lloyd" > Marie Lloyd</ a ></ b > (1870–1922)
was an English < a href = "/wiki/Music_hall" > music hall</ a > singer, ...
しかし、ユーザーエージェントが選択することができる複数の画像リソースを用いることを著者が望むかもしれない多数の状況が存在する:
異なるユーザーが異なる環境特性を持つかもしれない:
ユーザーの物理スクリーンサイズは他のものと異なるかもしれない。
ラップトップのスクリーンは14インチ型であるかもしれない一方で、携帯電話のスクリーンは4インチ型であるかもしれない。
画像のレンダリングサイズがビューポートに依存する場合、これは単に関連するだけである。
ユーザーのスクリーンピクセル密度は、別のスクリーンと異なるかもしれない。
携帯電話のスクリーンは、物理スクリーンサイズに関わらず、別の携帯電話のスクリーンと比較してインチあたり物理ピクセルとして3倍になるかもしれない。
ユーザーのズームレベルは別のものと異なるかもしれず、時間とともに単独のユーザーに対して変化するかもしれない。
ユーザーは、特定の画像の詳細を見るためにズームするかもしれない。
ズームレベルおよびスクリーンピクセル密度(前のポイント)は、CSSピクセル密度あたり多数の物理スクリーンピクセルに影響を与えることができる。この比率は、一般にデバイスピクセル比として参照される。
ユーザーのスクリーン方向は別のものと異なるかもしれず、時間とともに単独のユーザーに対して変化するかもしれない。
タブレットは縦型または90度回転して固定されることができ、その結果スクリーンは、"縦長"(portrait)または"横長"(landscape)のいずれかとなる。
ユーザーのネットワーク速度、ネットワークレイテンシおよび帯域幅コストは異なるかもしれず、時間とともに単独のユーザーに対して変化するかもしれない。
ユーザーは、仕事で低レイテンシおよび一定コスト接続の高速かもしれないし、家で低レイテンシおよび一定コスト接続の低速かもしれないし、他の場所で高レイテンシおよび可変コスト接続の速度変化かもしれない。
著者は、ビューポートの幅に依存して、同じ画像だが異なるレンダリングサイズを表示したいかもしれない。これは通常ビューポートベースの選択として参照される。
ウェブページは、常に全体のビューポート幅に及ぶ、一番上のバナーを持つかもしれない。この場合、画像のレンダリングサイズはスクリーンの物理サイズに依存する(最大化されたブラウザーウィンドウを仮定する)。
別のウェブページは、小さな物理サイズをもつスクリーンに対する列、中程度の物理サイズをもつスクリーンに対する列、大きな物理サイズをもつスクリーンに対する列をともない、ビューポートを埋める各ケースにおいてレンダリングサイズの変化する画像をもつ、列における画像を持つかもしれない。この場合、画像のレンダリングサイズは、スクリーンがより小さくにもかかわらず、2列レイアウトと比較して1列レイアウトでより大きくなるかもしれない。
著者は、画像のレンダリングサイズ次第で異なる画像コンテンツを表示したいかもしれない。これは通常art directionとして参照される。
ウェブページが大きな物理サイズ(最大化されたブラウザーウィンドウと仮定する)をもつスクリーンで見られる場合、著者は画像の重要な部分を囲むあまり関連しない部分を含むことを望むかもしれない。ウェブページが小さなな物理サイズをもつスクリーンで見られる場合、著者は画像の重要な部分のみを表示することを望むかもしれない。
著者は、ユーザーエージェントがサポートする画像フォーマットに応じて、同じ画像コンテンツだが異なる画像フォーマットを表示したいかもしれない。これは通常画像フォーマットベースの選択として参照される。
ウェブページは、JPEG、JPEGと比較してより圧縮能力のよいWebPおよびJPEG XRフォーマットで画像を持つかもしれない。異なるユーザーエージェントは、よりよい圧縮比を提供するフォーマットをもつ、異なる画像フォーマットをサポートすることができるため、サポートしないユーザーエージェントに対してJPEGフォールバックを提供する一方で、著者はフォーマットをサポートするユーザーエージェントに対してよりよいフォーマットを配信したいだろう。
上記の状況は、相互に排他的ではない。たとえば、art directionに対する異なるリソースをもつ異なるデバイスピクセル比が異なるリソースを組み合わせることは理にかなっている。
スクリプトを使用することでこれら問題を解決することは可能である間、そのようにすることは他の問題を導入する:
ウェブページがすぐに読み込み完了するように、スクリプトが実行する機会を持つ前に、一部のユーザーエージェントは、HTMLマークアップで指定される画像を積極的にダウンロードする。スクリプトがダウンロードする画像を変更する場合、より悪いページ読み込みパフォーマンスを引き起こすことができるダウンロードの代わりに、ユーザーエージェントはダウンロードを分離する2つを潜在的に開始するだろう。
著者がHTMLマークアップで任意の画像の指定を避け、かつスクリプトから単一のダウンロードを代わりに実例を示す場合、それは上記の2回のダウンロード問題を回避するが、無効にされるスクリプトをもつユーザーに対して画像を一切ダウンロードせず、かつ積極的な画像ダウンロード最適化も無効にされる。
このことを考慮して、この仕様は宣言する方法で上記の問題を申し立てるための多数の機能を導入する。
img
要素のsrc
およびsrcset
は、(より小さいサイズがより大きい画像のスケールダウンバージョンとなる)画像サイズで変化するのみの複数の画像を提供するためにx
記述子を用いて使用することができる。
画像のレンダリングサイズがビューポート幅に依存する場合(ビューポートベースの選択)、x
記述子は適さないが、art directionと一緒に使用することができる。
< h2 > From today's featured article</ h2 >
< img src = "/uploads/100-marie-lloyd.jpg"
srcset = "/uploads/150-marie-lloyd.jpg 1.5x, /uploads/200-marie-lloyd.jpg 2x"
alt = "" width = "100" height = "150" >
< p >< b >< a href = "/wiki/Marie_Lloyd" > Marie Lloyd</ a ></ b > (1870–1922)
was an English < a href = "/wiki/Music_hall" > music hall</ a > singer, ...
ユーザーエージェントは、ユーザーのスクリーンのピクセル密度、ズームレベルおよびユーザーのネットワーク状態のような可能性のあるその他の要素に依存する与えられたリソースのどれでも選択することができる。
srcset
属性を解釈しない古いユーザーエージェントの後方互換性のために、URLの1つは、img
要素のsrc
属性で指定される。これは(ユーザーが好むよりももしかすると低い解像度だけれども)古いユーザーエージェントにおいてさえも表示されるという何かしら役に立つ結果になるだろう。新しいユーザーエージェントに対して、あたかも属性が1x
記述子とともにsrcset
で指定されたかのように、src
属性はリソース選択に参加する。
画像のレンダリングサイズは、画像がダウンロードされる前に画像に対する空間を割り当てることがユーザーエージェントにできるwidth
およびheight
属性で与えられる。
srcset
およびsizes
は、(より小さいサイズがより大きい画像のスケールダウンバージョンとなる)画像サイズで変化するのみの複数の画像を提供するためにw
記述子を用いて使用することができる。
この例において、バナー画像は(適切なCSSを用いて)ビューポート幅全体を取る。
< h1 >< img sizes = "100vw" srcset = "wolf-400.jpg 400w, wolf-800.jpg 800w, wolf-1600.jpg 1600w"
src = "wolf-400.jpg" alt = "The rad wolf" ></ h1 >
ユーザーエージェントは、指定されるw
記述子およびsizes
属性で指定されるレンダリングサイズから各画像の効果的なピクセル密度を算出するだろう。 ユーザーエージェントは、ユーザーのスクリーンのピクセル密度、ズームレベルおよびユーザーのネットワーク状態のような可能性のあるその他の要素に依存する与えられたリソースのどれでも選択することができる。
ユーザーのスクリーンが320 CSSピクセル幅である場合、これはwolf-400.jpg 1.25x, wolf-800.jpg 2.5x, wolf-1600.jpg 5x
に指定するのと等価である。言い換えると、ユーザーのスクリーン1200 CSSピクセル幅である場合、これはwolf-400.jpg 0.33x, wolf-800.jpg 0.67x, wolf-1600.jpg 1.33x
に指定するのと等価である。w
記述子およびsizes
属性を使用することによって、ユーザーエージェントはユーザーのデバイスの大きさにかかわらず、ダウンロードする正確な画像リソースを選択することができる。
後方互換性のために、URLの1つはimg
要素のsrc
属性で指定される。新しいユーザーエージェントにおいて、srcset
属性がw
記述子を使用する場合、src
属性は無視される。
この例において、ウェブページはビューポートの幅に依存する3つのレイアウトを持つ。狭いレイアウトは1列目の画像(各画像の幅が約100%)、中程度のレイアウトは2列目の画像(各画像の幅が約50%)、広いレイアウトは3列目の画像(各画像の幅が約33%)、およびページマージンを持つ。ビューポートがそれぞれ幅30em
および幅50em
である場合、これらのレイアウトを壊す。
< img sizes = "(max-width: 30em) 100vw, (max-width: 50em) 50vw, calc(33vw - 100px)"
srcset = "swing-200.jpg 200w, swing-400.jpg 400w, swing-800.jpg 800w, swing-1600.jpg 1600w"
src = "swing-400.jpg" alt = "Kettlebell Swing" >
sizes
属性は、30em
および50em
でレイアウトのブレークポイントを設定し、これらブレークポイントの間で 100vw
、50vw
またはcalc(33vw - 100px)
に画像サイズを宣言する。これらサイズは、CSSで指定されたように実際の画像幅と厳密にマッチする必要が必然的にない。
ユーザーエージェントは、trueに評価する<media-condition>(丸括弧の一部)をもつ最初の項目を用いる、またはそれらがfalseにすべて評価する場合、最後の項目(calc(33vw - 100px)
)を用いて、sizes
属性から幅を選ぶだろう。
たとえば、ビューポート幅が29em
である場合、(max-width: 30em)
がtrueに評価し100vw
が使用され結果として、リソース選択の目的で画像サイズは29em
である。ビューポート幅が代わりに32em
である場合、(max-width: 30em)
はfalseに評価するが、(max-width: 50em)
はtrueに評価し、50vw
が使用され結果として、リソース選択の目的で画像のサイズは16em
(ビューポート幅の半分)となる。異なるレイアウトのため、わずかにより幅の広いビューポートがより小さい画像をもたらすことに注目する。
ユーザーエージェントは、効果的なピクセル密度を選択し、前の例と似た適切なリソースを選択することができる。
この例は前の例と同じであるが、画像がlazy-loadedである点が異なる。この場合、sizes
属性はauto
キーワードを使用でき、ユーザーエージェントはsource sizeにwidth
属性(またはCSSで指定された幅)を使用する。
< img loading = "lazy" width = "200" height = "200" sizes = "auto"
srcset = "swing-200.jpg 200w, swing-400.jpg 400w, swing-800.jpg 800w, swing-1600.jpg 1600w"
src = "swing-400.jpg" alt = "Kettlebell Swing" >
auto
キーワードをサポートしていないレガシーユーザエージェントとの後方互換性を向上させるために、必要に応じてフォールバックサイズを指定できる。
< img loading = "lazy" width = "200" height = "200"
sizes = "auto, (max-width: 30em) 100vw, (max-width: 50em) 50vw, calc(33vw - 100px)"
srcset = "swing-200.jpg 200w, swing-400.jpg 400w, swing-800.jpg 800w, swing-1600.jpg 1600w"
src = "swing-400.jpg" alt = "Kettlebell Swing" >
media
属性と共にpicture
要素およびsource
要素は、(たとえばより小さい画像がより大きい画像の収穫されたバージョンかもしれない)画像コンテンツを変化させる複数の画像を提供するために使用することができる。
< picture >
< source media = "(min-width: 45em)" srcset = "large.jpg" >
< source media = "(min-width: 32em)" srcset = "med.jpg" >
< img src = "small.jpg" alt = "The wolf runs through the snow." >
</ picture >
ユーザーエージェントがmedia
属性におけるメディアクエリーがマッチする最初のsource
要素を選択し、要素のsrcset
属性から適切なURLを選択する。
画像のレンダリングサイズは、ソースが選択されるものに依存して変化する。ダウンロードされた画像を持つ前にユーザーエージェントが使用することができる次元を指定するために、CSSは使用することができる。
img { width : 300 px ; height : 300 px }
@media ( min-width: 32em) { img { width: 500px; height:300px } }
@media (min-width: 45em) { img { width: 700px; height:400px } }
この例は、art directionおよびデバイスピクセル比ベースの選択を組み合わせる。ビューポートの半分を取るバナーは、1つは広いスクリーンに対して、1つは狭いスクリーンに対しての、2つのバージョンで提供される。
< h1 >
< picture >
< source media = "(max-width: 500px)" srcset = "banner-phone.jpeg, banner-phone-HD.jpeg 2x" >
< img src = "banner.jpeg" srcset = "banner-HD.jpeg 2x" alt = "The Breakfast Combo" >
</ picture >
</ h1 >
source
要素のtype
属性は、異なるフォーマットで複数の画像を提供するために使用することができる。
< h2 > From today's featured article</ h2 >
< picture >
< source srcset = "/uploads/100-marie-lloyd.webp" type = "image/webp" >
< source srcset = "/uploads/100-marie-lloyd.jxr" type = "image/vnd.ms-photo" >
< img src = "/uploads/100-marie-lloyd.jpg" alt = "" width = "100" height = "150" >
</ picture >
< p >< b >< a href = "/wiki/Marie_Lloyd" > Marie Lloyd</ a ></ b > (1870–1922)
was an English < a href = "/wiki/Music_hall" > music hall</ a > singer, ...
この例において、ユーザーエージェントは、サポートされるMIMEタイプをもつtype
属性を持つ最初のリソースを選択する。ユーザーエージェントがWebP画像をサポートする場合、最初のsource
要素が選択される。WebP画像をサポートしないが、ユーザーエージェントがJPEG XR画像をサポートする場合、2つ目のsource
要素が選択される。これらのフォーマットがいずれもサポートされない場合、img
要素が選択される。
CSSおよびメディアクエリーは、具体的には異なるビューポートの次元および画素密度で、ユーザーの環境に動的に適応するグラフィカルなページレイアウトを構築するために使用することができる。しかしコンテンツに対して、CSSは助けにならない。代わりに、img
要素のsrcset
属性およびpicture
要素がある。この節は、この機能を使用する方法を示すサンプル例を渡り歩く。
(600 CSSピクセルより広い)大きな画面でa-rectangle.png
という名前の300×150の画像が使用される一方で、(600 CSSピクセルより小さい)小さな画面でa-square.png
という名前の100×100の画像が使用される状況を考えてみよう。この場合のマークアップは次のようになる:
< figure >
< picture >
< source srcset = "a-square.png" media = "(max-width: 600px)" >
< img src = "a-rectangle.png" alt = "Barney Frank wears a suit and glasses." >
</ picture >
< figcaption > Barney Frank, 2011</ figcaption >
</ figure >
alt
属性の中に入れるものの詳細については、画像の代替として機能するテキストを提供するための要件の節を参照のこと。
これに伴う問題は、ユーザーエージェントが、画像が読み込まれるときに画像に使用する次元が何か必ずしも分からないということである。ページが読み込まれる最中に、複数回のリフローさせるレイアウトを回避するために、CSSおよびCSSメディアクエリーは、次元を提供するために使用することができる:
< style >
# a { width : 300 px ; height : 150 px ; }
@ media ( max-width : 600px ) { # a { width : 100 px ; height : 100 px ; } }
</ style >
< figure >
< picture >
< source srcset = "a-square.png" media = "(max-width: 600px)" >
< img src = "a-rectangle.png" alt = "Barney Frank wears a suit and glasses." id = "a" >
</ picture >
< figcaption > Barney Frank, 2011</ figcaption >
</ figure >
代替として、width
およびheight
属性は、単にpicture
をサポートするユーザーエージェントにCSSを単に使用して、レガシーユーザーエージェントに幅および高さを提供するために使用することができる:
< style media = "(max-width: 600px)" >
# a { width : 100 px ; height : 100 px ; }
</ style >
< figure >
< picture >
< source srcset = "a-square.png" media = "(max-width: 600px)" >
< img src = "a-rectangle.png" width = "300" height = "150"
alt = "Barney Frank wears a suit and glasses." id = "a" >
</ picture >
< figcaption > Barney Frank, 2011</ figcaption >
</ figure >
img
要素は、picture
要素をサポートしないレガシーユーザーエージェントに使用するために画像のURLを与えるsrc
属性とともに使用される。これは、src
属性で提供するためにその画像の質問につながる。
著者がレガシーユーザーエージェントで最大の画像を希望する場合、マークアップは次のようになる:
< picture >
< source srcset = "pear-mobile.jpeg" media = "(max-width: 720px)" >
< source srcset = "pear-tablet.jpeg" media = "(max-width: 1280px)" >
< img src = "pear-desktop.jpeg" alt = "The pear is juicy." >
</ picture >
しかし、レガシーモバイルユーザーエージェントがより重要である場合、完全にsrc
属性を上書きする、source
要素にすべての3つの画像を一覧表示することができる。
< picture >
< source srcset = "pear-mobile.jpeg" media = "(max-width: 720px)" >
< source srcset = "pear-tablet.jpeg" media = "(max-width: 1280px)" >
< source srcset = "pear-desktop.jpeg" >
< img src = "pear-mobile.jpeg" alt = "The pear is juicy." >
</ picture >
この時点で、実際にsrc
属性はpicture
をサポートするユーザーエージェントによって完全に無視されるため、src
属性は最小でも最大でもないものを含む、任意の画像をデフォルトにすることができる:
< picture >
< source srcset = "pear-mobile.jpeg" media = "(max-width: 720px)" >
< source srcset = "pear-tablet.jpeg" media = "(max-width: 1280px)" >
< source srcset = "pear-desktop.jpeg" >
< img src = "pear-tablet.jpeg" alt = "The pear is juicy." >
</ picture >
max-width
メディア機能が使用される上記は、画像が意図される最大(ビューポート)次元を与える。代わりにmin-width
を使用することも可能である。
< picture >
< source srcset = "pear-desktop.jpeg" media = "(min-width: 1281px)" >
< source srcset = "pear-tablet.jpeg" media = "(min-width: 721px)" >
< img src = "pear-mobile.jpeg" alt = "The pear is juicy." >
</ picture >
source
、img
およびlink
要素の共通属性srcset属性は、この節で定義された要件をもつ属性である。
属性が存在する場合、属性値は、U+002C COMMA文字(,)でそれぞれ分離される1つ以上の画像候補文字列から成らなければならない。画像候補文字列が記述子およびURLの後にASCII空白文字を一切含まない場合、次の画像候補文字列が存在するとき、1つ以上のASCII空白文字で開始しなければならない。
画像候補文字列は、以下のリストで説明される追加の制限とともに、順に、以下のコンポーネントから成る:
0個以上のASCII空白文字。
U+002C COMMA(,)文字で開始または終了しない妥当な空でないURLで、非インタラクティブを参照し、任意でアニメーション、ページ化もスクリプト化もされない画像リソース。
0個以上のASCII空白文字。
次の0または1つ:
0個以上のASCII空白文字。
同じ要素に対して別の画像候補文字列の幅記述子値と同じ幅記述子値を持つ要素に対する画像候補文字列が存在してはならない。
同じ要素に対して別の画像候補文字列のピクセル密度記述子値と同じピクセル密度記述子値を持つ要素に対する画像候補文字列が存在してはならない。この要求の目的のために、記述子をもたない画像候補文字列は、1x
記述子をもつ画像候補文字列と等価である。
要素に対する画像候補文字列が幅記述子を指定させる場合、その要素に対するすべての他の画像候補文字列も幅記述子を指定させなければならない。
画像候補文字列の幅記述子における指定される幅は、リソースが自然幅を持つ場合、画像候補文字列のURLによって指定されるリソースにおける自然幅にマッチしなければならない。
要素が存在するsizes属性を持つ場合、その要素に対するすべての画像候補文字列は幅記述子を指定させなければならない。
sizes属性は、この節で定義された要件をもつ属性である。
存在する場合、値は妥当なソースサイズのリストでなければならない。
妥当なソースサイズのリストは、以下の文法にマッチする文字列である:[CSSVALUES] [MQ]
< source-size-list > = < source-size > #? , < source-size-value >
< source-size > = < media-condition > < source-size-value > | auto
< source-size-value > = < length > | auto
<length>である<source-size-value>は負であってはならず、数学関数以外のCSS関数を使用してはならない。
キーワードauto
は、 parse width attributeで計算される幅である。存在する場合、これは最初のエントリーでなければならず、値<source-size-list>全体は文字列"auto
"(ASCII大文字・小文字不区別)である、または文字列"auto,
"(ASCII大文字・小文字不区別)で始まらなければならない。
画像の読み込みを開始したimg
要素(画像データの更新またはその要素の環境変化への対応アルゴリズムとともに)が自動サイズを許可し、かつレンダリングされている場合、 auto
は実際のオブジェクト幅である。そうでなければ、 auto
値は無視され、代わりに次のsource sizeが使用される(存在する場合)。
auto
キーワードは、次の条件が満たされる場合、source
要素のsizes
属性およびimg
要素のsizes
属性に指定してもよい。そうでなければ、auto
を指定してはならない。
要素はimg
である。
上記のいずれかの条件で参照されるimg
要素は、 自動サイズを可能にする。
さらに、width
およびheight
属性またはCSSで次元を指定することを強く勧める。サイズが指定されていない場合、画像は300×150の次元でレンダリングされる可能性がある。これは、sizes="auto"
がcontain-intrinsic-size: 300px 150px
をレンダリングセクションで暗黙に指定しているためである。
<source-size-value>は、画像の意図するレイアウト幅を与える。著者は、<media-condition>をもつ異なる環境に対して異なる幅を指定してもよい。
何に相対するかについての混乱を避けるため、パーセンテージは<source-size-value>で許可されない。'vw'単位は、viewport幅に相対的な大きさに対して使用することができる。
特に指定されている場合を除き、alt
属性を指定しなければならず、その値は空であってはならない。値は画像に対して適切な代用品でなければならない。alt
属性に対する具体的な要件は、以下の節で説明するように、画像が表現しようとするものによって異なる。
代替テキストを記述する場合に考慮すべき最も一般的な規則は次のとおりである:すべての画像をその画像のalt
属性のテキストと置換してもページの意味を変えないことを意図する。
よって、一般に、代替テキストは、もし画像を含めることができなかったならば、何が書かれていただろうかを考慮することで記述することができる。
この帰結は、alt
属性の値が画像のキャプション、タイトル、凡例とみなすことができるテキストを含めるべきではないということである。ユーザーが画像の代わりに使用できる代用テキストを含むはずである。画像を補完することを意図しない。title
属性は、補足情報のために使用することができる。
もう1つの帰結は、alt
属性の値は既に画像隣接する文で提供される情報を繰り返すべきではないということである。
代替テキストを考える1つの方法は、画像の存在があることを言及することなく、電話で誰かに画像を含むページをどのように読むかを考えることである。通常、画像の代わりにいうものは何でも、代替テキストを記述するための良いスタートである。
ハイパーリンクを作成するa
要素、またはbutton
要素が、テキストコンテンツを持たないが1つ以上の画像を含む場合、alt
属性はリンクまたはボタンの目的を併せて伝えるテキストを含まなければならない。
この例では、ユーザーは、3つのリストから好みの色を選択するよう求められている。各色は画像で与えられるが、画像を表示しないようにユーザーエージェントを設定しているユーザーのために、色名が代わりに使用される:
< h1 > Pick your color</ h1 >
< ul >
< li >< a href = "green.html" > < img src = "green.jpeg" alt = "Green" > </ a ></ li >
< li >< a href = "blue.html" > < img src = "blue.jpeg" alt = "Blue" > </ a ></ li >
< li >< a href = "red.html" > < img src = "red.jpeg" alt = "Red" > </ a ></ li >
</ ul >
この例において、それぞれのボタンは、ユーザーが望む色の出力の種類を示すために、画像の集合を持つ。最初の画像は、代替テキストを提供するために使用される。
< button name = "rgb" > < img src = "red" alt = "RGB" >< img src = "green" alt = "" >< img src = "blue" alt = "" > </ button >
< button name = "cmyk" > < img src = "cyan" alt = "CMYK" >< img src = "magenta" alt = "" >< img src = "yellow" alt = "" >< img src = "black" alt = "" > </ button >
各画像はテキストの一部を表すため、このようにも書くことができる:
< button name = "rgb" > < img src = "red" alt = "R" >< img src = "green" alt = "G" >< img src = "blue" alt = "B" > </ button >
< button name = "cmyk" > < img src = "cyan" alt = "C" >< img src = "magenta" alt = "M" >< img src = "yellow" alt = "Y" >< img src = "black" alt = "K" > </ button >
しかし、他の代替テキストとともに、これは動作しないかもしれず、それぞれの場合に1つの画像にすべての代替テキストを入れる方が理にかなっているかもしれない:
< button name = "rgb" > < img src = "red" alt = "sRGB profile" >< img src = "green" alt = "" >< img src = "blue" alt = "" > </ button >
< button name = "cmyk" > < img src = "cyan" alt = "CMYK profile" >< img src = "magenta" alt = "" >< img src = "yellow" alt = "" >< img src = "black" alt = "" > </ button >
たとえばフローチャート、図、グラフ、または道順を示す簡単な地図など、意味ある物を視覚的な形式で時により明確に記述することができる。そのような場合、画像はimg
要素を使って指定することができるが、より少ないテキスト版が依然として与えられなければならず、そのため画像を表示できない(たとえば、非常に低速な接続である、またはテキストのみのブラウザーを使用している、またはハンズフリーの自動車用音声ウェブブラウザーによって読み出されているページを聞いている、または単に目が見えないため)ユーザーは依然としてメッセージが搬送されて理解できる。
テキストはalt
属性で指定されなければならず、かつsrc
属性で指定される画像と同じメッセージを伝えなければならない。
代替テキストが画像の説明でなく、画像の代用品であることを認識することが重要である。
次の例において、文形式のフローチャートを言い換えるalt
属性のテキストをともなう、画像形式のフローチャートを持つ:
< p > In the common case, the data handled by the tokenization stage
comes from the network, but it can also come from script.</ p >
< p > < img src = "images/parsing-model-overview.svg" alt = "The Network
passes data to the Input Stream Preprocessor, which passes it to the
Tokenizer, which passes it to the Tree Construction stage. From there,
data goes to both the DOM and to Script Execution. Script Execution is
linked to the DOM, and, using document.write(), passes data to the
Tokenizer." > </ p >
これは別の例であり、説明に画像を含める問題に良い解決策と悪い解決策を示すものである。
まず、これは良い解決策である。このサンプルは、画像が存在しなかった場合、代替テキストがちょうど文に入れたであろうものがどうあるべきかを示す。
<!-- This is the correct way to do things. -->
< p >
You are standing in an open field west of a house.
< img src = "house.jpeg" alt = "The house is white, with a boarded front door." >
There is a small mailbox here.
</ p >
つぎに、これは悪い解決策である。この間違った方法では、画像に対するテキスト置換の代わりに、代替テキストは画像の簡単な説明である。画像が表示されていない場合、テキストは最初の例と同様に流れない。
<!-- This is the wrong way to do things. -->
< p >
You are standing in an open field west of a house.
< img src = "house.jpeg" alt = "A white house, with a boarded front door." >
There is a small mailbox here.
</ p >
(title
属性に対して、または、この画像をもつfigure
のfigcaption
要素内で適当かもしれないが)"Photo of white house with boarded door"などのテキストは同様に悪い代替テキストとなる。
文書は、アイコン形式で情報を含むことができる。アイコンは、視覚ブラウザーのユーザーに一目で機能を認識するのを助けることを意図する。
ある場合、アイコンは同じ意味を伝えるテキストラベルを補足する。これらの場合において、alt
属性は存在しなければならないが、空でなければならない。
ここで、アイコンは同じ意味を伝えるテキストの隣にあるので、空のalt
属性を持つ:
< nav >
< p >< a href = "/help/" > < img src = "/icons/help.png" alt = "" > Help</ a ></ p >
< p >< a href = "/configure/" > < img src = "/icons/configuration.png" alt = "" >
Configuration Tools</ a ></ p >
</ nav >
他の場合において、アイコンは何かを意味する記述をもつ横のテキストを持たない。アイコンは自明であると仮定される。この場合において、同等のテキストラベルはalt
属性で指定しなければならない。
ここで、ニュースサイトの記事は、そのトピックを示すアイコンが表示される。
< body >
< article >
< header >
< h1 > Ratatouille wins < i > Best Movie of the Year</ i > award</ h1 >
< p > < img src = "movies.png" alt = "Movies" > </ p >
</ header >
< p > Pixar has won yet another < i > Best Movie of the Year</ i > award,
making this its 8th win in the last 12 years.</ p >
</ article >
< article >
< header >
< h1 > Latest TWiT episode is online</ h1 >
< p > < img src = "podcasts.png" alt = "Podcasts" > </ p >
</ header >
< p > The latest TWiT episode has been posted, in which we hear
several tech news stories as well as learning much more about the
iPhone. This week, the panelists compare how reflective their
iPhones' Apple logos are.</ p >
</ article >
</ body >
多くのページは、会社、組織、プロジェクト、バンド、ソフトウェアパッケージ、国、またはその他団体を表すロゴ、記号、旗、またはエンブレムを含む。
たとえばページの見出しのように、ロゴが団体を表すために使用されている場合、alt
属性はロゴによって表されるその団体の名前を含まなければならない。alt
属性は、伝えられているロゴであるという事実はないので、単語"ロゴ"のようなテキストを含んではならない。団体そのものである。
ロゴが表すものの名前の横にロゴが使用される場合、そのロゴは補足であり、そのalt
属性は空でなければならない。
ロゴが単なる装飾材料(ブランディングとして、たとえば、ロゴが所属する実体を言及する記事でサイドイメージ)として使用される場合、純粋に装飾的な画像で以下のエントリーが適用される。ロゴが実際に議論されている場合、それは代替グラフィック表現(ロゴ自体)、および適用される上記の最初のエントリーを持つ語句や段落(ロゴの説明)として使用されている。
以下の断片において、上記の例のすべての4つが存在している。まず、会社を表すために使用されるロゴを見てみる:
< h1 > < img src = "XYZ.gif" alt = "The XYZ company" > </ h1 >
次に、会社名の隣でロゴを使用する段落を見てみよう。何ら代替テキストを持たない:
< article >
< h2 > News</ h2 >
< p > We have recently been looking at buying the < img src = "alpha.gif"
alt = "" > ΑΒΓ company, a small Greek company
specializing in our type of product.</ p >
この3番目の断片において、購買を吟味するarticleの一部として、asideに使用されているロゴを持つ:
< aside >< p >< img src = "alpha-large.gif" alt = "" ></ p ></ aside >
< p > The ΑΒΓ company has had a good quarter, and our
pie chart studies of their accounts suggest a much bigger blue slice
than its green and orange slices, which is always a good sign.</ p >
</ article >
最後に、ロゴを話題にする意見記事であり、ロゴは代替テキストで詳細に記載される。
< p > Consider for a moment their logo:</ p >
< p >< img src = "/images/logo" alt = "It consists of a green circle with a
green question mark centered inside it." ></ p >
< p > How unoriginal can you get? I mean, oooooh, a question mark, how
< em > revolutionary</ em > , how utterly < em > ground-breaking</ em > , I'm
sure everyone will rush to adopt those specifications now! They could
at least have tried for some sort of, I don't know, sequence of
rounded squares with varying shades of green and bold white outlines,
at least that would look good on the cover of a blue book.</ p >
この例は、画像が利用可能でない場合、どのように代替テキストは記述すべきかを示し、代わりにテキストが使用され、あたかも画像が最初の場所になかったかのように、テキストは周囲のテキストにシームレスに流れる。
時に、画像がテキストだけで構成されており、画像の目的が、テキストをレンダリングするために使用される実際の印刷効果を強調するだけでなく、単にテキスト自体を伝えるもの。
このような場合、alt
属性が存在しなければならないが、画像自身に書かれたものと同じテキストで構成されなければならない。
テキスト"Earth Day"を含むグラフィックを考慮するが、文字はすべての花や植物で飾られる。グラフィカルなユーザーに対してページに味わいを加えるために、テキストが単に見出しとして使用される場合、適切な代替テキストはまさに同じテキスト"Earth Day"であり、装飾的な言及は何ら必要ない:
< h1 > < img src = "earthdayheading.png" alt = "Earth Day" > </ h1 >
彩色写本は、その画像の一部のグラフィックスを使用するかもしれない。このような状況で代替テキストは、単に画像が表す文字である。
< p >< img src = "initials/o.svg" alt = "O" > nce upon a time and a long long time ago, late at
night, when it was dark, over the hills, through the woods, across a great ocean, in a land far
away, in a small house, on a hill, under a full moon...
画像がUnicodeで表現できない文字を表すために別の方法で使用される場合、たとえば外字、異体字、または新規の通貨記号のような新しい文字において、テキストによる代替は、たとえば、文字の発音を与えるために表音のひらがなやカタカナを使用するなど、同じものを記述するより伝統的な方法であるべきである。
1997年からのこの例において、中央の2つのバーとともに渦巻き状のEのように見える最新式の通貨記号のかわりに、画像を使用して表現される。代替テキストは、文字の発音を与える。
< p > Only < img src = "euro.png" alt = "euro " > 5.99!
文字が同じ目的を果たすならば画像を使用すべきでない。たとえば装飾のため、または適切な文字がないため(外字の場合のように)など、テキストをテキストで直接表現することができない場合にのみ、画像が適切だろう。
デフォルトのシステムフォントが指定された文字をサポートしないため、著者が画像を使用するように誘惑される場合、ウェブフォントは画像よりも優れた解決策である。
多くの場合、画像は実際には単なる補足であり、その存在は単に周囲のテキストを強調するだけである。この場合、alt
属性が存在しなければならないが、その値は空文字列でなければならない。
一般に画像は、画像を削除してもページの有用性が弱まるわけでない場合にこのカテゴリーに分類されるが、画像を含めることは、視覚ブラウザーのユーザーにとって概念を理解することがはるかに容易になる。
グラフィカルな形式で、前の段落を繰り返すフローチャート:
< p > The Network passes data to the Input Stream Preprocessor, which
passes it to the Tokenizer, which passes it to the Tree Construction
stage. From there, data goes to both the DOM and to Script Execution.
Script Execution is linked to the DOM, and, using document.write(),
passes data to the Tokenizer.</ p >
< p >< img src = "images/parsing-model-overview.svg" alt = "" ></ p >
この場合、単なるキャプションで構成する代替テキストを含めることが間違っているだろう。キャプションが含まれるべき場合、title
属性、または、figure
およびfigcaption
要素のいずれかを使用できる。後者の場合、画像は実際に代替グラフィック表現を伴うフレーズまたは段落かもしれず、したがって代替テキストを必要とする。
<!-- Using the title="" attribute -->
< p > The Network passes data to the Input Stream Preprocessor, which
passes it to the Tokenizer, which passes it to the Tree Construction
stage. From there, data goes to both the DOM and to Script Execution.
Script Execution is linked to the DOM, and, using document.write(),
passes data to the Tokenizer.</ p >
< p > < img src = "images/parsing-model-overview.svg" alt = ""
title = "Flowchart representation of the parsing model." > </ p >
<!-- Using <figure> and <figcaption> -->
< p > The Network passes data to the Input Stream Preprocessor, which
passes it to the Tokenizer, which passes it to the Tree Construction
stage. From there, data goes to both the DOM and to Script Execution.
Script Execution is linked to the DOM, and, using document.write(),
passes data to the Tokenizer.</ p >
< figure >
< img src = "images/parsing-model-overview.svg" alt = "The Network leads to
the Input Stream Preprocessor, which leads to the Tokenizer, which
leads to the Tree Construction stage. The Tree Construction stage
leads to two items. The first is Script Execution, which leads via
document.write() back to the Tokenizer. The second item from which
Tree Construction leads is the DOM. The DOM is related to the Script
Execution." >
< figcaption > Flowchart representation of the parsing model.</ figcaption >
</ figure >
<!-- This is WRONG. Do not do this. Instead, do what the above examples do. -->
< p > The Network passes data to the Input Stream Preprocessor, which
passes it to the Tokenizer, which passes it to the Tree Construction
stage. From there, data goes to both the DOM and to Script Execution.
Script Execution is linked to the DOM, and, using document.write(),
passes data to the Tokenizer.</ p >
< p >< img src = "images/parsing-model-overview.svg"
alt = "Flowchart representation of the parsing model." ></ p >
<!-- Never put the image's caption in the alt="" attribute! -->
グラフィカルな形式で、前の段落を繰り返すグラフ:
< p > According to a study covering several billion pages,
about 62% of documents on the web in 2007 triggered the Quirks
rendering mode of web browsers, about 30% triggered the Almost
Standards mode, and about 9% triggered the Standards mode.</ p >
< p >< img src = "rendering-mode-pie-chart.png" alt = "" ></ p >
時には、画像はコンテンツに重要ではないが、それにもかかわらず、純粋に装飾的でもテキストと完全に冗長でもないことがある。この場合、alt
属性は存在しなければならず、かつその値は空の文字列、または画像が伝える情報のテキスト表現のいずれかであるべきである。画像が画像のタイトルを与えるキャプションを持つ場合、(非視覚読者に相当な混乱を与えることになるので)alt
属性の値は空であってはならない。
個人の顔が画像で示されている政治家に関するニュース記事を考えてみる。ニュース記事に関連するので、画像は純粋に装飾的ではない。政治家がどのように見えるかを示すので、画像はいずれかのニュース記事とも完全に冗長ではない。代替テキストを提供する必要があるかどうかは、画像が本文の解釈に影響を与えるかどうかによって決定されるオーサリングの決定である。
この最初の変形例において、画像はコンテキストなしで示され、かつ一切の代替テキストが提供されない:
< p > < img src = "president.jpeg" alt = "" > Ahead of today's referendum,
the President wrote an open letter to all registered voters. In it, she admitted that the country was
divided.</ p >
画像が顔のみである場合、その画像を説明する際に値は存在しないかもしれない。個人が赤髪または金髪を持つかどうか、個人が白い肌または黒い肌を持つかどうか、個人が片目または両目を持つかどうか、読者に興味のないことである。
しかし、画像がより動的である、たとえば怒る、非常に幸せ、またはひどく落ち込んだなどの政治家を示す場合、一部の代替テキストは、文章のトーンを設定する際に有用であり、そうでなければ見逃されるかもしれない:
< p > < img src = "president.jpeg" alt = "The President is sad." >
Ahead of today's referendum, the President wrote an open letter to all
registered voters. In it, she admitted that the country was divided.
</ p >
< p > < img src = "president.jpeg" alt = "The President is happy!" >
Ahead of today's referendum, the President wrote an open letter to all
registered voters. In it, she admitted that the country was divided.
</ p >
個人が"悲しい"か"幸せ"かは、段落の残りの部分の解釈に違いをもたらす。彼女は、国が分割されていることに不満を持っていると言っているのか、それとも国は分割される可能性があるという見通しは 彼女の政治的キャリアにとって適していると言っているのか? 解釈は、画像に基づいて変化する。
画像がキャプションを持つ場合、代替テキストを含むことはキャプションが何を参照するかについての混乱を非ビジュアルユーザーに残すことを避ける。
< p > Ahead of today's referendum, the President wrote an open letter to
all registered voters. In it, she admitted that the country was divided.</ p >
< figure >
< img src = "president.jpeg"
alt = "A high forehead, cheerful disposition, and dark hair round out the President's face." >
< figcaption > The President of Ruritania. Photo © 2014 PolitiPhoto. </ figcaption >
</ figure >
画像が装飾的であるが特にページ固有でない場合―たとえばサイト全体のデザインスキームの一部を形成する画像のような―画像は、文書のマークアップでなく、サイトのCSSで指定すべきである。
しかし、周囲のテキストで議論されないが、依然として一部の関連性を持つ装飾的な画像はimg
要素を使用して、ページに含めることが可能である。そのような画像は装飾的であるが、依然としてコンテンツの一部に由来する。この場合、alt
属性が存在しなければならないが、その値は空文字列でなければならない。
詩を暗唱するページで、Burning Manのイベント、または詩にインスパイアされた絵画の画像についてのブログ投稿でBlack Rock Cityの風景の写真のようなものを含むものが関連するにも関わらず、画像が純粋に装飾的である例。次の断片は、(最初の詩の行のみがこの断片に含まれる)後者の場合の例を示す:
< h1 > The Lady of Shalott</ h1 >
< p >< img src = "shalott.jpeg" alt = "" ></ p >
< p > On either side the river lie< br >
Long fields of barley and of rye,< br >
That clothe the wold and meet the sky;< br >
And through the field the road run by< br >
To many-tower'd Camelot;< br >
And up and down the people go,< br >
Gazing where the lilies blow< br >
Round an island there below,< br >
The island of Shalott.</ p >
画像が小さな画像ファイルに分割されている場合、再度完全な画像を形成するために共に表示され、画像の1つは、全体としての絵に適するだろう関連規則に従って設定されたalt
属性を持たなければならず、残りのすべての画像は、空のalt
属性を持たなければならない。
次の例において、XYZ社の会社のロゴを表す絵が2枚に分割されており、1枚目は文字"XYZ"を含み、2枚目は単語"Corp"をもつ。代替テキスト( "XYZ Corp")は、最初の画像ですべてである。
< h1 > < img src = "logo1.png" alt = "XYZ Corp" >< img src = "logo2.png" alt = "" > </ h1 >
次の例において、評価は、3つの塗りつぶされた星と、2つの中抜きの星として示される。代替テキストは"★★★☆☆"かもしれないが、代わりに著者は、より親切な形式"3 out of 5"の評価を与えるようにした。これは最初の画像の代替テキストであり、残りは空白の代替テキストを持つ。
< p > Rating: < meter max = 5 value = 3 > < img src = "1" alt = "3 out of 5"
>< img src = "1" alt = "" >< img src = "1" alt = "" >< img src = "0" alt = ""
>< img src = "0" alt = "" > </ meter ></ p >
一般にイメージマップは、リンク用の画像をスライスする代わりに使用されるべきである。
画像が確かにスライスされ、スライスされた画像のコンポーネントのいずれかがリンクの唯一のコンテンツである場合、リンクあたりの1つの画像は、リンクの目的を表すalt
属性で代替テキストを持たなければならない。
次の例において、ユーザーが冒険中の左側または右側を選ぶことができるように、異なる画像で左付属と右付属のそれぞれと、飛行スパゲッティモンスターエンブレムを表す絵である。
< h1 > The Church</ h1 >
< p > You come across a flying spaghetti monster. Which side of His
Noodliness do you wish to reach out for?</ p >
< p >< a href = "?go=left" >< img src = "fsm-left.png" alt = "Left side. " ></ a
>< img src = "fsm-middle.png" alt = ""
>< a href = "?go=right" >< img src = "fsm-right.png" alt = "Right side." ></ a ></ p >
場合によっては、画像はコンテンツの重要な部分である。たとえば、これは、フォトギャラリーの一部であるページに当てはまるかもしれない。画像はその画像を含むページの全体の要点である。
コンテンツの重要な部分である画像の代替テキストを提供する方法は、画像の出所に依存する。
提供される詳細な代替テキストで可能な場合、たとえば、画像が雑誌のレビューでの一連のスクリーンショットや、漫画の一部、またはその写真に関するブログエントリーでの写真である場合、画像に対して適切に提供されるようなテキストがalt
属性のコンテンツとして指定されなければならない。
代替テキストを伴う、新しいOSについてのギャラリーでのスクリーンショット:
< figure >
< img src = "KDE%20Light%20desktop.png"
alt = "The desktop is blue, with icons along the left hand side in
two columns, reading System, Home, K-Mail, etc. A window is
open showing that menus wrap to a second line if they
cannot fit in the window. The window has a list of icons
along the top, with an address bar below it, a list of
icons for tabs along the left edge, a status bar on the
bottom, and two panes in the middle. The desktop has a bar
at the bottom of the screen with a few buttons, a pager, a
list of open applications, and a clock." >
< figcaption > Screenshot of a KDE desktop.</ figcaption >
</ figure >
財務レポートのグラフ:
< img src = "sales.gif"
title = "Sales graph"
alt = "From 1998 to 2005, sales increased by the following percentages
with each year: 624%, 75%, 138%, 40%, 35%, 9%, 21%" >
"sales graph"は、売上グラフに対する代替テキストとして不十分であることに注意する。良いキャプションとされるテキストは、一般に置換テキストとしては適さない。
ある場合において、画像の性質は、徹底した代替テキストを提供することが現実的ではないかもしれない。たとえば、画像は不鮮明であったり、複雑なフラクタルかもしれず、詳細な地形図であるかもしれない。
この場合、alt
属性は、適切な代替テキストが含まれなければならないが、それはやや短いかもしれない。
単に画像を正しく扱うことのできるテキストが存在しないのである。たとえば、ロールシャッハ・インクブロットテストを記述するための有用な言及はほとんどない。しかし、短い説明であっても、まだ何もないよりましである:
< figure >
< img src = "/commons/a/a7/Rorschach1.jpg" alt = "A shape with left-right
symmetry with indistinct edges, with a small gap in the center, two
larger gaps offset slightly from the center, with two similar gaps
under them. The outline is wider in the top half than the bottom
half, with the sides extending upwards higher than the center, and
the center extending below the sides." >
< figcaption > A black outline of the first of the ten cards
in the Rorschach inkblot test.</ figcaption >
</ figure >
以下は、代替テキストの非常に悪い用法であろうことに注意する:
<!-- This example is wrong. Do not copy it. -->
< figure >
< img src = "/commons/a/a7/Rorschach1.jpg" alt = "A black outline
of the first of the ten cards in the Rorschach inkblot test." >
< figcaption > A black outline of the first of the ten cards
in the Rorschach inkblot test.</ figcaption >
</ figure >
このような代替テキストのキャプションを含むことは、実用的でない。なぜなら、一度でもキャプションを読んだり聞いたことがあった場合、2回以上助けず、画像を持たないユーザーに対してキャプションを効果的に重複するためである。
完全な説明を覆す画像の別の例は、定義により、詳細で無限であるフラクタルである。
次の例は、マンデルブロ集合の画像の完全なビューの代替テキストを提供する1つの可能な方法を示す。
< img src = "ms1.jpeg" alt = "The Mandelbrot set appears as a cardioid with
its cusp on the real axis in the positive direction, with a smaller
bulb aligned along the same center line, touching it in the negative
direction, and with these two shapes being surrounded by smaller bulbs
of various sizes." >
同様に、人の顔の写真は、たとえば伝記において、コンテンツにかなり関連し、コンテンツの鍵と考えることができるが、テキストを完全に代替するのは困難である:
< section class = "bio" >
< h1 > A Biography of Isaac Asimov</ h1 >
< p > Born < b > Isaak Yudovich Ozimov</ b > in 1920, Isaac was a prolific author.</ p >
< p >< img src = "headpics/asimov.jpeg" alt = "Isaac Asimov had dark hair, a tall forehead, and wore glasses.
Later in life, he wore long white sideburns." ></ p >
< p > Asimov was born in Russia, and moved to the US when he was three years old.</ p >
< p > ...</ p >
</ section >
そのような場合、そのようなテキストは、画像の存在を報告するブラウザー自体に冗長になるため、代替テキストで画像自体の存在への参照を含むことは不必要である(実際に推奨されない)。たとえば、代替テキストが"アイザック・アシモフの写真"であった場合、適合するユーザーエージェントはより有用な"(画像)アイザック・アシモフは黒い髪、長い額で、眼鏡をかけ..."よりもむしろ"(画像)アイザック・アシモフの写真"として読み上げるかもしれない。
画像が任意の関連する代替テキストのない一部の自動化された方法で得られる(たとえばウェブカメラなど)、またはページが、ユーザーが適切なまたは有用な代替テキストを提供できない場所でのユーザーが提供する画像を使用するスクリプトによって生成されている(たとえば写真共有サイト)、または著者自身が、画像が何を表すのかを知らない(たとえばブログで画像を共有する視覚障害者の写真家)のいずれかなどの、一部の不幸な例において、使用可能な代替テキストがまったく存在しないかもしれない。
そのような場合、alt
属性を省略してもよいが、次のいずれかの条件をさらに満たさなければならない:
title
属性が存在しかつ空でない値を持つ。
title
属性に依存することは、多くのユーザーエージェントがこの仕様で要求されるようなアクセス可能な方法で属性を公開しないため、現在推奨されない(たとえば、ツールチップを出現させるマウスなどのポインティングデバイスが必要になり、これはモダンな携帯端末やタブレットをもつ人のような、キーボードのみのユーザーとタッチのみのユーザーを締め出す)。
そのような場合は最小限に保たれるべきである。実際の代替テキストを提供する能力を有する著者のわずかな可能性がある場合、alt
属性の省略を許容しないだろう。
サイトがキャプション以外のメタデータを用いて画像を受信した場合、写真共有サイトの写真は、次のようにマークアップできる:
< figure >
< img src = "1100670787_6a7c664aef.jpg" >
< figcaption > Bubbles traveled everywhere with us.</ figcaption >
</ figure >
しかし、画像の重要部分の詳細な説明が、ユーザーから取得してページに含まれる場合、これはより良いだろう。
ユーザーが撮影した写真での視覚障害者ユーザーのブログを示す。最初に、ユーザーはショーを撮った写真の任意のアイデアを持たないかもしれない:
< article >
< h1 > I took a photo</ h1 >
< p > I went out today and took a photo!</ p >
< figure >
< img src = "photo2.jpeg" >
< figcaption > A photograph taken blindly from my front porch.</ figcaption >
</ figure >
</ article >
しかし最終的に、ユーザーは友人による画像の説明を取得するかもしれず、その場合代替テキストを含めることができる:
< article >
< h1 > I took a photo</ h1 >
< p > I went out today and took a photo!</ p >
< figure >
< img src = "photo2.jpeg" alt = "The photograph shows my squirrel
feeder hanging from the edge of my roof. It is half full, but there
are no squirrels around. In the background, out-of-focus trees fill the
shot. The feeder is made of wood with a metal grate, and it contains
peanuts. The edge of the roof is wooden too, and is painted white
with light blue streaks." >
< figcaption > A photograph taken blindly from my front porch.</ figcaption >
</ figure >
</ article >
時として画像全体の要点は、テキストの説明が利用できず、ユーザーが説明を提供する。たとえば、CAPTCHA画像のポイントは、ユーザーが文字通りグラフィックを読むことができるかどうかを確認することにある。これはCAPTCHAをマークアップする1つの方法である(title
属性に注目する):
< p >< label > What does this image say?
< img src = "captcha.cgi?id=8934" title = "CAPTCHA" >
< input type = text name = captcha ></ label >
(If you cannot see the image, you can use an < a
href = "?audio" > audio</ a > test instead.)</ p >
もう1つの例は、画像を表示し、正しい代替テキストをもつページを書く目的に対して正確に代替テキストを求めるソフトウェアである。そのようなページは次のように、画像のテーブルを持つことができる:
< table >
< thead >
< tr > < th > Image < th > Description
< tbody >
< tr >
< td > < img src = "2421.png" title = "Image 640 by 100, filename 'banner.gif'" >
< td > < input name = "alt2421" >
< tr >
< td > < img src = "2422.png" title = "Image 200 by 480, filename 'ad3.gif'" >
< td > < input name = "alt2422" >
</ table >
この例ですら、できる限り多くの有用な情報が依然としてtitle
属性に含まれることに注意する。
一部のユーザーは、まったく画像を使用できない(たとえば、非常に低速な接続である、テキストのみのブラウザーを使用している、ハンズフリーの自動車声ウェブブラウザーで読みあげてページを聞いている、または単に目が見えない)ので、alt
属性は省略することが許可されるよりむしろ、上記の例のようにまったく代替テキストが利用できず、何も利用できない場合に、置換テキストを備えるのである。著者の一部による努力の欠如は、alt
属性を省略するための許容可能な理由でない。
一般に、著者は画像を表示する以外の目的でimg
要素を使用することは避けるべきである。
img
要素を画像を表示する以外の目的で使用する場合、たとえば、ページビューをカウントするサービスの一部として用いる場合、alt
属性は空文字列でなければならない。
このような場合、width
とheight
属性は、両方とも0に設定すべきである。
この節は、公にアクセス可能な、すなわち、ウェブサイト上の文書、公開メーリングリストに送信された電子メール、またはソフトウェアのドキュメントなど、対象となる読者が必ずしも個人的に著者に知られていない文書には適用されない。
画像が、画像を見ることができることが知られている特定の人に向けた私的通信(たとえばHTML形式の電子メールなど)に含まれる場合、alt
属性は省略されてもよい。しかし、このようなケースでさえも、著者は、(上記のエントリーで説明したように、関連する画像の種類に応じて適切に)代替テキストを含めることを強く勧める。結果として、ユーザーが画像をサポートしないメールクライアントを使用する場合、または文書が画像を簡単に見ることのできないユーザーに転送される場合、電子メールは依然として有用である。