[1] HTML の map
要素型の要素は、
クライアント側画像写像 (や他の誘導機構) を定義します。
元々画像写像のために定義された要素型ですが、 画像とは関係なしに一般の誘導のために使うことができます HTML 4.01 13.6.1。
[3] 仕様書:
MAP
and AREA
elements
IW:HTML4:"struct/objects.html#edef-MAP"http://www.w3.org/1999/xhtml
map
(area
| %block;)+
%inline
な文脈
(歴史的変遷: https://suika.suikawiki.org/www/2004/html/classes)属性名 | 属性値 | 既定値 | 説明 | 出典 |
class | 級 | [HTML4] %coreattr | ||
dir | 書字方向 | [HTML4] %i18n | ||
id | 一意識別子 | [HTML4] %coreattr | ||
lang | 自然言語 | [HTML4] %i18n | ||
xml:lang | 自然言語 | [XHTML1] | ||
name | 画像写像名 | [HTML 4] | ||
onclick | [HTML4] %events | |||
ondblclick | [HTML4] %events | |||
onkeydown | [HTML4] %events | |||
onkeypress | [HTML4] %events | |||
onkeyup | [HTML4] %events | |||
onmousedown | [HTML4] %events | |||
onmousemove | [HTML4] %events | |||
onmouseout | [HTML4] %events | |||
onmouseover | [HTML4] %events | |||
onmouseup | [HTML4] %events | |||
style | スタイル情報 | [HTML4] %coreattr | ||
title | 注釈的題 | [HTML4] %coreattr |
[6] map
要素の内容としては2種類のものを入れることができます。
area
要素area
要素が1つの領域を定義します。
普通 UA は area
要素をレンダリングしません。
強制空要素なので、 HTML 2.0 など古い仕様・実装とは非互換です。a
要素を含むべきです。 UA はブロック水準要素をレンダリングするべきです
HTML 4.01 13.6.1 (以前はしてもよいとされていました
HTML 4.0 13.6.1)。
HTML 4 で追加された方法ですが、より accessible
なこちらの方法が推奨されています。[8] 著者は、すべての領域を area
要素で定義するか、すべてをブロック水準要素で定義するか、
すべてを両方で定義するかにするべきです。
こうすれば新旧 UA で幸せになれます。
混在時は area
をすべて無視しなければなりません。
HTML 4.01 13.6.1
2つ以上の範囲が重なっているときには、文書順で最初のものが優先されます (利用者の入力を受取ります)。
(原文も) やや曖昧な気がしますが、重なる部分を持つ範囲が複数定義されている時は、重なっている部分についてはじめのものが使われる、ということでよいのでしょうかね?
(名無しさん)
[15]
HTML 4 において map
要素は行内要素でありながら、
内容としては area
要素の他ブロック水準要素も認められます。 object
要素と並んでブロック水準要素の内側に行内要素という構造を逸脱した存在になっています。
[16] 元々 map
要素は area
要素と組合せる方法しか用意されていませんでした。
area
は強制空要素型で、関連付けられた
img
要素上の領域を作成する以外は文書構造やレンダリングにおいて何の意味も持ちませんでした。
この状態に於いては map
要素をどこに書こうが問題はありませんでした。
(そういう場合は head
に入れるのがよかったのかもしれません。あるいは img
が強制空要素でなければその中に書ければよかったかもしれません。)
[17] しかし、 HTML 4 でブロック水準要素が
map
要素の内容に認められたために >>15
のようなおかしなことが起こりました。しかも画像写像に限らず
navigation 一般に semantics が拡大されたために、 >>14
のような不都合が生じました。ブロック水準要素を内容として認めるなら
map
]] 自体もブロック水準要素にするべきだったのです。
互換性の問題があるとすれば、移行用DTD
では行内要素としても使えることにすればよかったのです。
[18] ブロック水準要素の内容:
元々 map
要素の内容としては強制空要素の
area
しか使えませんでしたが、
アクセス可能性の向上のために任意のブロック水準要素が使えるようになりました。
しかしどれだけ利用者エージェントが対応しているかはよくわかっていません。
そのためかあまり使われないので、 HTML 5
には入らない見込みです (>>14)。
[19] 代替内容:
map
と area
による画像写像は、
対応していない利用者エージェントや画像を表示できない利用者エージェントでうまく扱えないという問題があります。
著者は、 area
によるリンクと実質的に同じものを
a
でも別途提供するべきです。
利用者エージェントは、 area
によるリンクを画像がなくてもたどれる手段やその存在自体を通知する方法を用意するべきです。
[40] Extensions to HTML 3.0, , http://web.archive.org/web/19970613213431/http://www1.netscape.com/assist/net_sites/html_extensions_3.html
[41] HTML TADS deviations from standard HTML specifications, , https://www.tads.org/t3doc/doc/htmltads/deviate.htm#deviations
[28] XHTML2 では2つ目の作業原案で削除され、3つ目の作業原案で復活しています。
3つ目の作業原案の状態の章で2つ目の作業原案には編集上の誤りがあったと指摘されており、
素直に信じるなら削除はミスということになります。2つ目の作業原案では
src
と関連する属性が大域属性化され、
usemap
属性を削除するつもりで他の要素まで削除してしまった可能性があります。
あるいは、本当は map
要素も削除するつもりで、
後から方針を変更したのかもしれません。いずれにしても、大域属性化で
map
要素は本質的に不要になったのになぜ残したのかは謎です。
[29] しかし1ヵ月後にはあっさり削除されています。
MAP
要素 (DjVu XML)[4] map
要素で定義した画像写像は、
usemap
属性を使って参照 (使用) できます。
[5] 画像写像の個々の領域は a
要素や
area
要素によって定義します。
[12]
map
要素の参照と HTML vs XHTML と id
vs name
の問題
Bug 109445 - Referencing a client-side image map declared with id attribute doesn't work https://bugzilla.mozilla.org/show_bug.cgi?id=109445
[whatwg http://listserver.dreamhost.com/pipermail/whatwg-whatwg.org/2005-January/002782.html
[13]
map
は画像写像として使う画像と同じ文書にあってもよいし、違う文書にあってもよいがあまり対応されていないと HTML 4 DTD の注釈に書かれています。
<HTML lang="en"> <HEAD> <TITLE>The cool site!</TITLE> </HEAD> <BODY> <P><OBJECT data="navbar1.png" type="image/png" usemap="#MAP1"> <MAP name="MAP1"> <P>Navigate the site: <A href="guide.html" shape="rect" coords="0,0,118,28">Access Guide</a> | <A href="shortcut.html" shape="rect" coords="118,0,184,28">Go</A> | <A href="search.html" shape="circle" coords="184,200,60">Search</A> | <A href="top10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">Top Ten</A> </MAP> </OBJECT> </BODY> </HTML>
(HTML 4 仕様書より、改)
この例では、 object
で画像を表示できるときには誘導リンク集をレンダリングしません。
<HTML lang="en"> <HEAD> <TITLE>The cool site!</TITLE> </HEAD> <BODY> <P><OBJECT data="navbar1.png" type="image/png" usemap="#MAP1"> </OBJECT> ...the rest of the page here... <MAP name="MAP1"> <P>Navigate the site: <A href="guide.html" shape="rect" coords="0,0,118,28">Access Guide</a> | <A href="shortcut.html" shape="rect" coords="118,0,184,28">Go</A> | <A href="search.html" shape="circle" coords="184,200,60">Search</A> | <A href="top10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">Top Ten</A> </MAP> </BODY> </HTML>
(HTML 4 仕様書より、改)
こちらの例では、 object
で画像が表示できる場合にも誘導リンク集をレンダリングします。
<P> <OBJECT data="navbar.png" type="image/png" usemap="#MAP1"> <OBJECT data="navbar.jpeg" type="image/jpeg" usemap="#MAP1"> <MAP name="MAP1"> <P>Navigate the site: <A href="guide.html" shape="rect" coords="0,0,118,28">Access Guide</a> | <A href="shortcut.html" shape="rect" coords="118,0,184,28">Go</A> | <A href="search.html" shape="circle" coords="184,200,60">Search</A> | <A href="top10.html" shape="poly" coords="276,0,276,28,100,200,50,50,276,0">Top Ten</A> </MAP> </OBJECT> </OBJECT>
(HTML 4 仕様書より、改)
[14] 単なる案内のために使った例
<div><map id="nav"><ul> <li><a href="/">Home</a></li> ... <li><a>Current page</a></li> ... <li><a href="/contact/">Contact</a></li> </ul></map></div>
出典: [whatwg http://listserver.dreamhost.com/pipermail/whatwg-whatwg.org/2005-April/003551.html
著者は map
は行内要素で
body
の子供にできないので仕方なく
div
を使っていると言っています。
name
属性または id
属性が必須だったり、 map
属性はどうも使いにくい。
[20] 単なる案内のために使った例
<div> <map name="introLinks" id="introLinks" title="Introductory Links"> <div class="banner"> <span class="invisible"><a class="bannerLink" title="Skip introductory links and the mission statement" href="#technologies" shape="rect">Skip to Technologies</a> |</span> <a class="bannerLink" title="W3C Activities" accesskey="A" href="/Consortium/activities" shape="rect">Activities</a> | <a class="bannerLink" title="Technical Reports and Recommendations" accesskey="T" href="/TR/" shape="rect">Technical Reports</a> | <a class="bannerLink" title="Alphabetical Site Index" accesskey="S" href="/Consortium/siteindex" shape="rect">Site Index</a> | <a class="bannerLink" title="Help for new visitors" accesskey="N" href="/Consortium/new-to-w3c" shape="rect">New Visitors</a> | <a class="bannerLink" title="About W3C" accesskey="B" href="/Consortium/" shape="rect">About W3C</a> | <a class="bannerLink" title="Join W3C" accesskey="J" href="/Consortium/join" shape="rect">Join W3C</a> | <a class="bannerLink" title="Contact W3C" accesskey="C" href="/Consortium/contact" shape="rect">Contact W3C</a> </div> </map> </div>
>>14 と同じく、画像写像とは関係なく案内のための文字 base
な内容。無意味な div
, map
,
div
の三重奏には心打たれます。
どう考えても欠陥仕様だけど自分のところで作った以上律儀に守っているお茶目な
W3C ったらもうwwww
出典: World Wide Web Consortium (2005年7月現在) http://www.w3.org/#introLinks
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 6.5.0.0 for Windows"> ... <P><IMG src="kyoto.gif" width="661" height="622" border="0" usemap="#kyoto"></P> <MAP name="kyoto"> <AREA href="../../../index.html" target="_top" shape="rect" coords="20,20,208,76" alt="旅行.Infoへ"> <AREA href="../pdf/kyoto.pdf" target="_blank" shape="rect" coords="114,103,207,126" alt="PDF版を開く"> <AREA shape="default" nohref> </MAP> ...
[25]
Nora Radcliffe (2007-08-15 10:22:16 +09:00
版) http://www.noraradcliffe.co.uk/
<td id="navigation" bgcolor="#cccccc" width="150" align="center" valign="top"> <map id="navigationmenu" title="Navigation Menu"> <table id="menu" border="1" cellspacing="0" cellpadding="2"> ... <a href="other.html">Other party sites</a>. </p> </map> </td>
(名無しさん)
[23]
HTML-Image map Creator WYSIWYG - uses AJAX (2006-12-29 03:23:59 +09:00
版) http://www.kolchose.org/simon/ajaximagemapcreator/
(名無しさん 2007-01-06 04:29:33 +00:00)
[24]
RFC 4482 CIPID: Contact Information for the Presence Information Data Format (2007-01-22 23:57:56 +09:00
版) http://tools.ietf.org/html/rfc4482#section-3.5
(名無しさん 2007-01-27 13:03:49 +00:00)
[26]
HTML 5, WinIE 7, Opera 9, Safari 3 では
map
要素の中に map
開始タグが現れると入れ子の map
要素とみなしますが、
Firefox 3 だけは map
終了タグを勝手に補って、外側の map
要素を閉じてしまいます。
(名無しさん)
[27]
map
要素が入れ子になっている場合、
HTML 5 も4ブラウザもすべて、
内側の map
要素の子孫である area
要素は外側の map
要素にも内側にも両方共に関連付けます。
(名無しさん)
[30] (X)HTML5 Tracking ( 版) http://html5.org/tools/web-apps-tracker?from=4334&to=4335
[31] Techniques for WCAG 2.0 ( ( 版)) http://www.w3.org/TR/2012/NOTE-WCAG20-TECHS-20120103/complete.html#H50
[32] Welcome to Netscape Navigator Version 2.0 ( ( 版)) http://web.archive.org/web/20030202175634/http://wp.netscape.com/eng/mozilla/2.0/relnotes/windows-2.0.html#Images
[37] Fix #227: clarify conformance vs. parsing for hash-name references · whatwg/html@7f1a845 ( 版) https://github.com/whatwg/html/commit/7f1a8457559316f060be55298bd5656baba19644
[38] dfn what it means for elements to be “referenced” (sideshowbarker著, ) https://github.com/whatwg/html/commit/d0872abf29373f284c93434875e2e30d12602081
[39] Please add <map> to the list of elements that support attachShadow(init) · Issue #734 · w3c/webcomponents () https://github.com/w3c/webcomponents/issues/734