12.1.1 画像 (img)
img 要素は、画像を表示する際に使用します。 必須属性のsrc属性で画像ファイルのURLを指定します。
一般的なブラウザで表示できる画像フォーマットとしては、PNG、GIF、JPEGがよく利用されています。他にも、ウェブ用のベクター画像フォーマットである SVG や、単一ページのPDFなどを src 属性の値として指定できます。
alt 属性は、単に画像のタイトルを入れるのではなく、その画像が表すものを文章として説明する必要があります。例えば、文章中に画像が埋め込まれた場合、画像を取り除いて本文と代替テキストだけを残した場合でも、その文章が問題なくつながるような内容とすることが求められています。
また、画像全体ではなく一部をクリックしたときに他の文書にリンクしたり、Javascriptを実行したい場合には、usemap 属性で map 要素の name を指定します。
img 要素
画像を表示する。終了タグはない。
属性
| 属性名 | 属性値 | 説明 | 必須 |
| src | URI | 埋め込む画像の URI | ○ |
| alt | 代替テキスト | 画像を表示しない場合などの、画像を説明するための文章 | × |
| width | ピクセル数 | 画像の幅 | × |
| height | ピクセル数 | 画像の高さ | × |
| usemap | name 属性値 | イメージマップの名称(# を忘れないこと) | × |
| ismap | 論理値 | サーバー側イメージマップとして扱う場合に指定 | × |
| srcset | 画像URL 記述子 | 画像の URL と記述子のセット(コンマ区切りで複数記述できる)
記述子は次のいずれか
| 記述子 | 意味 |
| 横幅 | 画像ファイルの横幅(ピクセル数)。単位:w | (規定値:1x) |
| 比率 | デバイスピクセル比。単位:x |
| × |
| sizes | 表示幅 | 表示する条件とそのときに表示する画像の横幅(コンマ区切りでで複数記述できる)
| 表示幅 | 意味 |
| 条件(最後の要素は不要) | (min-width: ピクセル数) 画面サイズがピクセル数以上のとき | 単位:px | (規定値:1x) |
(max-width: ピクセル数) 画面サイズがピクセル数以下のとき |
| 横幅 | 画像ファイルの横幅 | 単位: vw、vh、vmin、vmax(ビューポートに対する割合) em、rem、px、cm、pt など(画像サイズ) |
| × |
(1) src 属性
src 属性に表示したい画像の URI を指定します。
画像を base64 にエンコード(変換)して直接HTMLファイルに埋め込むこともできます。src 属性の ","以降の文字列が base64 にエンコードされた画像のデータです。こうすることで、別に画像ファイルを読み込むことがなくなり表示速度が速くなります。ただし、エンコードすることで src 属性に記述される文字列が多くなり HTML ファイルの読み込みが遅くなることもあります。アイコンなどの小さい画像だけにすべきでしょう。
ちなみに下の例の画像は base64 にエンコードすると 12512文字になります(記述例では省略してあります)。
記述例
<img src="bear.png" title="ファイルを読み込んだ熊の絵">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA ... AAAAASUVORK5CYII=" title="base64でエンコードした熊の絵">
表示例
(2) width、height 属性
width 属性では表示される幅、height 属性では表示される高さを指定します。表示する画像の大きさではありません。
記述例
<img src="bear.png" alt="オリジナルの大きさそのままの熊の絵" title="普通">
<img src="bear.png" width="74" height="111" alt="縦に1.5倍に引き伸ばした熊の絵" title="のっぽ">
<img src="bear.png" width="111" height="74" alt="横に1.5倍に引き伸ばした熊の絵" title="ぽっちゃり">
width や height を記述しなければ画像そのままの大きさで、指定すればその大きさで表示されます。
表示例
(3) ismap 属性
また、ismap を指定すると、サーバー側イメージマップとなり、クリックした座標(x,y)が、URLのクエリ文字列としてサーバーに送信されるようになります。
左の例は、熊の絵をクリックしてもパラメーターは送られませんが、右の例ではクリックした座標がサーバーに送られます。
記述例
ismap がない例
<a href="bear.htm"><img src="bear.png" title="くま"></a>
|
ismap がある例
<a href="bear.htm"><img src="bear.png" title="くま" ismap></a>
|
(4) srcset 属性
srcset 属性とは、HTML5.1から追加された属性で、サイズ違いの画像を条件によって切り替える機能です。
srcset 属性では、表示したい画像の候補を複数記述しても、実際に読み込まれる画像は適切な1枚のみであって、表示しないその他の候補画像を無駄にロードしません。
画像の候補には、画像ファイルの横幅( w )またはデバイスピクセル比( x )のどちらかを指定することができます。1つ目はビューポート(ブラウザの表示領域)の幅に応じて画像を切り替える指定、2つ目はデバイスのピクセル比に応じて画像を切り替える指定です。
次の例では、bear-500.png は 500px、bear-600.png は 600px、bear-700.png は 700px であるという情報をブラウザに伝えています。そして、ブラウザの幅が 500px 以下ならば bear-500.png、600px 以下ならば bear-600.png、600px より大きければ bear-700.png が表示されます。
また、のような srcset 属性をサポートしていないブラウザ用に src 属性も合わせて記述します。ただし、srcset 属性の後に記述する必要があります。なお、srcset 属性の画像が表示された場合には、src 属性は無視されます。
記述例
<img srcset="bear-500.png 500w, bear-600.png 600w, bear-700.png 700w"
src="bear.png" title="クマ">
別ウィンドウで表示し、ウィンドウの横幅を変えてみてください。横幅の大きさによって画像が変わります。ただし、などは、一度大きなサイズの画像が表示されてしますと、それ以降はその画像しか表示されなくなってしまいます。その場合は、ウィンドウの横幅を小さくした状態で、キャッシュされた画像を消去して、再表示してみてください。
は、大きなサイズの画像が表示されても再読み込みすれば小さなサイズの画像が表示されるようになります。
表示例
700px
600px
500px
(5) sizes 属性
スマートフォン、タブレット、PCなどデバイスによって表示サイズが異なります。いろいろなデバイスの表示サイズにあわせて最適な画像を表示する仕組みです。
sizes 属性は、表示する画像のサイズ(横幅)とその条件を指定します。割合で指定する場合は % ではなく vw、vh、vmin、vmax 単位を使います。長さで指定する場合は em、rem、px、cm、pt などが使用できます。(長さの単位 を参照してください)
また、sizes 属性は srcset 属性がある場合のみ記述でき、srcset 属性にはセットされる全ての画像候補に画像ファイルの幅(w の単位)を指定しておく必要があります
次の例では、表示サイズが 500px 以下ならば350pxで、500px~700px の間ならは幅 70%で、それ以上ならば 490px で表示されます。
記述例
<img srcset="bear-700.png 700w"
sizes="(max-width:500px) 350px, (max-width:700px) 70vw, 490px"
src="bear.png" title="クマ">
別ウィンドウで表示し、ウィンドウの横幅を変えてみてください。横幅の大きさによって画像が変わります。
表示例
700px
500px
12.1.3 リンク領域 (area)
area 要素は、イメージマップのクリックできる領域の形やリンク先を定義します。この要素は、map 要素内で使用します。
領域の形は、shape 属性と coords 属性で決定し、リンク先は href 属性で指定します。href 属性を記述しなければ、クリックしてもどこにもリンクしない領域になります。
イメージマップとは、クリック可能なリンク領域を持つ画像のことで、それをサーバーではなくブラウザ側で処理するのでクライアントサイド・イメージマップといいます。
area 要素
イメージマップのクリックできる領域の形やリンク先を定義する。
なお、領域が重なっていた場合は先に指定したほうが優先される。また、クリックしてもどこにもリンクしない領域にしたい場合は、href 属性を記述しない。
属性
| 属性名 | 属性値 | 説明 | 必須 |
| shape | 領域の形状 | × |
| rect | 四角形(規定値) |
| circle | 円形 |
| poly | 多角形 |
| default | 画像全体(他の属性より後に指定する必要がある) |
| coords | 座標(x,y)等 | × |
| x1,y1,x2,y2 | 四角形のとき、左上(x1,y1)と右下(x2,y2)の角の座標 |
| x,y,r | 円形のとき、中心(x,y)の座標と半径(r) |
| x1,y1,x2,y2,x3,y3 ... | 多角形のとき、すべての頂点(x1,y1 など)の座標 |
| x1,y1,x2,y2 | 画像全体のとき、左上(x1,y1)と右下(x2,y2)の角の座標( や のときは必要) |
| href | URI | リンク先のURI(記述しなければどこにもリンクしない) | × |
| alt | 代替テキスト | マップが表示できない場合に説明する文章 | × |
| hreflang | 記述言語 言語コード一覧 | リンク先の文書を記述している言語 | href がない場合は指定できない |
| type | MIME タイプ MIME タイプ一覧 | リンク先の MIME タイプ |
| rel | 関係性 リンクタイプ一覧 | 外部ファイルとの関係性 |
| media | メディア メディアタイプ一覧 | 対象とするメディア |
| target | リンク先の内容を表示するウィンドウ(フレーム) |
| _blank | 新規のウィンドウに表示 |
| _self | 現在のウィンドウ(フレーム)に表示 |
| _parent | 親ウィンドウ(フレーム)に表示 |
| _top | ウィンドウ全体に表示 |
| 名称 | 指定のウィンドウ(フレーム)に表示 |
記述例
<p><img src="map.png" alt="クリッカブルマップのためのサンプル図形" usemap="#example"></p>
<map name="example">
<area shape="rect" coords="50,50,150,150" href="rect.htm" title="四角">
<area shape="circle" coords="250,100,50" href="circle.htm" title="円">
<area shape="poly" coords="400,50,450,150,350,150" href="poly.htm" title="三角">
<area shape="default" coords="0,0,500,200" href="default.htm" title="その他">
</map>
表示例