| この記事の要点 |
|
map要素とは
<map> は HTML のイメージマップを定義する要素です。1 枚の画像の任意の領域に対し、それぞれ別のリンク先を割り当てられます。たとえば「日本地図の画像で、北海道を押したら北海道のページへ、九州を押したら九州のページへ」といった作りが、JS なしで実現できます。
基本構文
<img src="/img/japan.png" alt="日本地図" usemap="#japan-map" width="600" height="400">
<map name="japan-map">
<area shape="rect" coords="350,30,500,120"
href="/area/hokkaido" alt="北海道">
<area shape="circle" coords="280,250,40"
href="/area/kansai" alt="関西">
<area shape="poly" coords="100,300,180,280,200,360,120,380"
href="/area/kyushu" alt="九州">
</map>
属性
| 要素 | 属性 | 意味 |
|---|---|---|
| <map> | name | マップ名(必須、<img usemap> から参照) |
| <img> | usemap | 使用するマップ名を # 付きで指定 |
| <area> | shape | 領域の形(rect/circle/poly/default) |
| <area> | coords | 領域の座標(形に応じた値) |
| <area> | href | クリック時の遷移先 |
| <area> | alt | 代替テキスト(必須) |
| <area> | target | 遷移先のフレーム / タブ |
shape と coords の書き方
| shape | 意味 | coords の形式 | 例 |
|---|---|---|---|
rect | 長方形 | 左上x, 左上y, 右下x, 右下y | 50,30,200,150 |
circle | 円 | 中心x, 中心y, 半径 | 100,100,40 |
poly | 多角形 | x1,y1, x2,y2, x3,y3, ... | 10,10, 50,30, 30,80 |
default | 残りの領域すべて | 不要 | — |
サンプル:4 領域のメニュー画像
<img src="/img/banner.png" alt="メニュー" usemap="#menu" width="800" height="200">
<map name="menu">
<area shape="rect" coords="0,0,200,200"
href="/menu/coffee" alt="コーヒー">
<area shape="rect" coords="200,0,400,200"
href="/menu/tea" alt="紅茶">
<area shape="rect" coords="400,0,600,200"
href="/menu/cake" alt="ケーキ">
<area shape="rect" coords="600,0,800,200"
href="/menu/news" alt="お知らせ">
</map>
レスポンシブ対応の注意点
coords は画像のオリジナルサイズ基準の絶対ピクセルです。CSS で画像を縮小・拡大しても coords は追従しません。これがイメージマップ最大の弱点です。対策としては:
- 画像サイズを CSS で変えない(固定)
- JS で表示倍率に合わせて
coordsを再計算する - またはSVG に置き換える(<a xlink:href> を持つパスを並べる)
代替手段との比較
| 手段 | 長所 | 短所 |
|---|---|---|
| <map> + <area> | JS 不要、HTML 標準 | レスポンシブ不可(座標固定) |
| SVG + <a> | 拡大縮小に強い、アニメ可 | SVG 作成の手間 |
| CSS で要素を重ねる | 柔軟、リッチ装飾可 | HTML/CSS 量が増える |
アクセシビリティ
alt属性は必須(スクリーンリーダーはaltでリンク内容を読み上げ)- 意味のある順序で
<area>を並べる(タブ移動順になる) - 装飾的なクリック領域なら
alt=""を許容(空文字は意味のない領域) - キーボード操作で各領域へ Tab 移動できる —
tabindex不要、フォーカスリングは確実に見せる - モバイルではタップ領域が 44px 四方以上になるよう
coordsを設計
座標を取得する手間を減らすツール
イメージマップ作成最大の手間は coords の座標取り。手動でやるのは現実的でないので、次のような手段が使われます。
- オンラインのイメージマップエディタ(画像を読ませて領域をマウスで描く → HTML を出力)
- 画像編集ソフト(GIMP、Photoshop)の「Image Map」エクスポート機能
- HTML エディタ拡張(VS Code 拡張等)
運用としては、画像と一緒に座標情報を JSON で保存しておき、ビルド時に HTML へ展開すると、画像差し替え時の保守が楽になります。
SEO 上の扱い
検索エンジンは <area> の href をリンクとしてクロール対象にします。alt 属性がアンカーテキスト相当として扱われるので、各領域の alt はそこへ移動する内容を表す具体的な語にするのが望ましいです(例: 「メニュー」より「ランチメニュー」)。
よくある落とし穴
usemap="japan"— # が必要。usemap="#japan"と書くnameとidの混同 —usemapが参照するのはname- 同じページに同名 map が複数 — ブラウザによって挙動不定
- CSS で
imgを縮小したのにcoords据え置き — クリック位置がズレる polyの座標が奇数個になっている — x,y のペアなので必ず偶数個areaにaltがない — HTML 仕様違反、検証ツールで弾かれる
関連
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Git pushした変更の取消し|revert・履歴変更と保護の注意点 2026-10-15 23:49:01
- Gitでローカルを戻す前に|reset・restoreの違いと退避範囲 2026-10-15 23:49:01
- Git rebaseの使い方|対象範囲・競合解決・pushの判断 2026-10-15 22:50:59
- Git pullの使い方|取込み先・ff-only・競合とstashの注意点 2026-10-15 22:50:59
- Git pushの使い方|送信先・タグ・force-with-leaseの条件 2026-10-15 22:12:47
- Git remoteの設定・確認・削除|SSH URLとfetch/pushの違い 2026-10-15 22:12:47
- Gitリモートリポジトリの作成|初回push・既存履歴・mirrorの注意 2026-10-15 15:48:16
- Gitのuser.name・user.email設定|local/global・確認と過去履歴の注意 2026-10-15 15:30:07
- LinuxにGitをインストール|配布元・初期設定・TLSと認証の確認 2026-10-15 15:30:06
- Git導入と初回push|Linuxサーバー・Windows/macOS・SSH設定 2026-10-15 14:51:54
- Db2のCREATE INDEX|索引定義・INCLUDEと実行計画の確認 2026-10-15 14:10:22
- Db2の自動採番|IDENTITY・ID取得とRESTARTの注意点 2026-10-15 14:10:22
- 【DB2】特定スキーマの全テーブルの全カラム情報を取得する方法 2026-10-15 13:53:15
- Db2のシーケンスとIDENTITYの違い|採番とカタログの確認SQL 2026-10-15 13:53:15
- Db2で複数カラムをUPDATEする方法|SET・WHEREと更新前の値 2026-10-15 13:53:15