1. 4.8.12 map 元素
      2. 4.8.13 area 元素
      3. 4.8.14 图像地图
        1. 4.8.14.1 作者撰写
        2. 4.8.14.2 处理模型

4.8.12 map 元素

元素/map

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer
Firefox Android4+Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

HTMLMapElement

所有当前引擎都支持。

Firefox1+Safari3+Chrome1+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS1+Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+
类别:
流内容.
短语内容.
可感知内容.
可以使用此元素的上下文:
在预期 短语内容 的位置。
内容模型:
透明的.
text/html 中的标签省略:
两个标签都不能省略。
内容属性:
全局属性
name图像地图 的名称,用于从 usemap 属性进行引用
可访问性注意事项:
对于作者.
对于实现者.
DOM 接口:
[Exposed=Window]
interface HTMLMapElement : HTMLElement {
  [HTMLConstructor] constructor();

  [CEReactions] attribute DOMString name;
  [SameObject] readonly attribute HTMLCollection areas;
};

map 元素与 img 元素和任何 area 元素后代一起,定义了一个图像地图。该元素表示其子元素。

name 属性为地图指定一个名称,以便可以对其进行引用。该属性必须存在,并且必须具有非空值,且不包含ASCII 空格name 属性的值不得等于同一中另一个map 元素的name 属性的值。如果还指定了id 属性,则这两个属性必须具有相同的值。

map.areas

返回一个HTMLCollection,其中包含area 元素,这些元素位于map 中。

areas 属性必须返回一个以map 元素为根的HTMLCollection,其过滤器仅匹配area 元素。

IDL 属性name 必须反映同名内容属性。

可以结合页面上的其他内容定义图像地图,以简化维护。此示例显示了一个页面,该页面在页面顶部有一个图像地图,在底部有一组相应的文本链接。

<!DOCTYPE HTML>
<HTML LANG="EN">
<TITLE>Babies™: Toys</TITLE>
<HEADER>
 <H1>Toys</H1>
 <IMG SRC="/images/menu.gif"
      ALT="Babies™ navigation menu. Select a department to go to its page."
      USEMAP="#NAV">
</HEADER>
 ...
<FOOTER>
 <MAP NAME="NAV">
  <P>
   <A HREF="/clothes/">Clothes</A>
   <AREA ALT="Clothes" COORDS="0,0,100,50" HREF="/clothes/"> |
   <A HREF="/toys/">Toys</A>
   <AREA ALT="Toys" COORDS="100,0,200,50" HREF="/toys/"> |
   <A HREF="/food/">Food</A>
   <AREA ALT="Food" COORDS="200,0,300,50" HREF="/food/"> |
   <A HREF="/books/">Books</A>
   <AREA ALT="Books" COORDS="300,0,400,50" HREF="/books/">
  </P>
 </MAP>
</FOOTER>

4.8.13 area 元素

元素/area

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera?Edge79+
Edge (Legacy)12+Internet Explorer
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

HTMLAreaElement

所有当前引擎都支持。

Firefox1+Safari1+Chrome1+
Opera12.1+Edge79+
Edge (Legacy)12+Internet Explorer5.5+
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android12.1+
类别:
流内容.
短语内容.
可以使用此元素的上下文:
在预期 短语内容 的位置,但前提是存在 map 元素祖先。
内容模型:
.
text/html 中的标签省略:
没有 结束标签
内容属性:
全局属性
alt — 图像不可用时使用的替换文本
coords — 在图像地图中创建形状的坐标
shape — 在图像地图中创建的形状类型
href超链接的地址
target可导航的,用于超链接导航
download — 是否下载资源而不是导航到它,以及如果是,则下载的文件名
ping — 要 ping 的URL
rel — 包含超链接的文档中位置与目标资源之间的关系
referrerpolicy — 由元素发起的获取引用程序策略
可访问性注意事项:
如果元素具有href 属性:对于作者对于实现者
否则:对于作者对于实现者
DOM 接口:
[Exposed=Window]
interface HTMLAreaElement : HTMLElement {
  [HTMLConstructor] constructor();

  [CEReactions] attribute DOMString alt;
  [CEReactions] attribute DOMString coords;
  [CEReactions] attribute DOMString shape;
  [CEReactions] attribute DOMString target;
  [CEReactions] attribute DOMString download;
  [CEReactions] attribute USVString ping;
  [CEReactions] attribute DOMString rel;
  [SameObject, PutForwards=value] readonly attribute DOMTokenList relList;
  [CEReactions] attribute DOMString referrerPolicy;

  // also has obsolete members
};
HTMLAreaElement includes HTMLHyperlinkElementUtils;

area 元素表示具有某些文本和图像地图上相应区域的超链接,或者图像地图上的死区。

具有父节点的area 元素必须具有map 元素祖先。

如果area 元素具有href 属性,则area 元素表示一个超链接。在这种情况下,必须存在alt 属性。它指定超链接的文本。其值必须是文本,当与图像地图的其他超链接指定的文本以及图像的替代文本一起显示时,但在没有图像本身的情况下,为用户提供与超链接在不使用其文本但将形状应用于图像时提供的相同类型的选择。如果同一图像地图中还有另一个area 元素指向相同资源并具有非空白alt 属性,则可以将alt 属性留空。

如果area 元素没有href 属性,则该元素表示的区域无法选择,并且必须省略alt 属性。

在这两种情况下,shapecoords 属性都指定区域。

shape 属性是一个具有以下关键字和状态的枚举属性

关键字符合状态简要说明
circle 圆形状态 指定一个圆形,在coords 属性中使用正好三个整数。
circ
default 默认状态 此区域是整个图像。(不使用coords 属性。)
poly 多边形状态 指定一个多边形,在coords 属性中使用至少六个整数。
polygon
rect 矩形状态 指定一个矩形,在coords 属性中使用正好四个整数。
rectangle

属性的缺失值默认值无效值默认值都是矩形状态。

如果指定了coords 属性,则它必须包含一个有效的浮点数列表。此属性提供由shape 属性描述的形状的坐标。此属性的处理过程在图像映射处理模型中进行了描述。

圆形状态下,area 元素必须具有一个coords 属性,该属性包含三个整数,最后一个整数必须是非负数。第一个整数必须是图像左侧边缘到圆心在CSS 像素中的距离,第二个整数必须是图像顶侧边缘到圆心在CSS 像素中的距离,第三个整数必须是圆的半径,同样以CSS 像素为单位。

默认状态下,area 元素不能具有coords 属性。(该区域为整个图像。)

多边形状态下,area 元素必须具有一个coords 属性,该属性至少包含六个整数,并且整数的数量必须是偶数。每对整数必须表示一个坐标,该坐标分别以CSS 像素为单位给出图像左侧和顶部边缘的距离,所有坐标一起必须按顺序表示多边形的点。

矩形状态下,area 元素必须具有一个coords 属性,该属性正好包含四个整数,第一个整数必须小于第三个整数,第二个整数必须小于第四个整数。这四个点必须分别表示图像左侧边缘到矩形左侧的距离、顶部边缘到顶部的距离、左侧边缘到右侧的距离以及顶部边缘到底部的距离,所有距离均以CSS 像素为单位。

当用户代理允许用户访问下载使用area 元素创建的超链接时,hreftargetdownloadping 属性决定如何访问该链接。rel 属性可用于在用户访问链接之前向用户指示目标资源的可能性质。

如果href 属性不存在,则必须省略targetdownloadpingrelreferrerpolicy 属性。

如果在area 元素上指定了itemprop 属性,则还必须指定href 属性。

HTMLAreaElement/rel

所有当前引擎都支持。

Firefox30+Safari9+Chrome54+
Opera?Edge79+
Edge(旧版)12+Internet Explorer11
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

IDL 属性altcoordsshapetargetdownloadpingrel 必须反映同名内容属性。

HTMLAreaElement/relList

所有当前引擎都支持。

Firefox30+Safari9+Chrome65+
Opera41+Edge79+
Edge(旧版)18Internet Explorer不支持
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android41+

IDL 属性relList 必须反映rel 内容属性。

HTMLAreaElement/referrerPolicy

所有当前引擎都支持。

Firefox50+Safari14.1+Chrome52+
Opera?Edge79+
Edge(旧版)?Internet Explorer不支持
Firefox Android?Safari iOS?Chrome Android?WebView Android?Samsung Internet?Opera Android?

IDL 属性referrerPolicy 必须反映referrerpolicy 内容属性,仅限于已知值

4.8.14 图像映射

4.8.14.1 创作

图像映射允许将图像上的几何区域与超链接相关联。

图像(img 元素形式)可以通过在img 元素上指定usemap 属性与图像映射(map 元素形式)相关联。如果指定了usemap 属性,则它必须是map 元素的有效哈希名称引用

考虑如下所示的图像

A line with four shapes in it, equally spaced: a red hollow box, a green circle, a blue triangle, and a yellow four-pointed star.

如果我们只想使彩色区域可点击,我们可以按如下方式操作

<p>
 Please select a shape:
 <img src="shapes.png" usemap="#shapes"
      alt="Four shapes are available: a red hollow box, a green circle, a blue triangle, and a yellow four-pointed star.">
 <map name="shapes">
  <area shape=rect coords="50,50,100,100"> <!-- the hole in the red box -->
  <area shape=rect coords="25,25,125,125" href="red.html" alt="Red box.">
  <area shape=circle coords="200,75,50" href="green.html" alt="Green circle.">
  <area shape=poly coords="325,25,262,125,388,125" href="blue.html" alt="Blue triangle.">
  <area shape=poly coords="450,25,435,60,400,75,435,90,450,125,465,90,500,75,465,60"
        href="yellow.html" alt="Yellow star.">
 </map>
</p>
4.8.14.2 处理模型

如果img 元素指定了usemap 属性,则用户代理必须按如下方式处理它

  1. 使用解析哈希名称引用的规则解析属性的值,并将元素作为上下文节点。这将返回一个元素(map)或 null。

  2. 如果返回 null,则返回。图像最终未与图像映射相关联。

  3. 否则,用户代理必须收集map 的所有后代area 元素。将这些元素设为areas

获得构成图像映射的area 元素列表(areas)后,交互式用户代理必须以两种方式之一处理该列表。

如果用户代理打算显示img 元素表示的文本,则它必须使用以下步骤。

  1. 删除areas 中所有没有href 属性的area 元素。

  2. 删除areas 中所有没有alt 属性或其alt 属性值为空字符串的area 元素,前提是areas 中还有另一个area 元素在href 属性中具有相同的值,并且具有非空的alt 属性。

  3. areas 中每个剩余的area 元素都表示一个超链接。所有这些超链接都应以与img 文本相关联的方式提供给用户。

    在此上下文中,用户代理可能会以实现定义的方式表示没有指定alt 属性或其alt 属性为空字符串或其他不可见文本的areaimg 元素,以指示缺少合适的作者提供的文本。

如果用户代理打算显示图像并允许与图像交互以选择超链接,则必须将图像与一组分层形状相关联,这些形状取自areas 中的area 元素,并按反向树序(因此,map 中最后指定的area 元素是最底层的形状,map 中的第一个元素(按树序)是最顶层的形状)。

必须按如下方式处理areas 中的每个area 元素以获得要叠加到图像上的形状

  1. 找到元素的shape 属性表示的状态。

  2. 使用解析浮点数列表的规则解析元素的coords 属性(如果存在),并将结果设为coords 列表。如果属性不存在,则将coords 列表设为空列表。

  3. 如果 coords 列表中的项目数量小于下表中给出的 area 元素当前状态的最小数量,则形状为空;返回。

    状态最小项目数量
    圆形状态 3
    默认状态 0
    多边形状态 6
    矩形状态 4
  4. 根据以下列表中与 shape 属性状态对应的条目,检查 coords 列表中的多余项目。

    圆形状态
    删除列表中第三个项目之后的任何项目。
    默认状态
    删除列表中的所有项目。
    多边形状态
    如果项目数量为奇数,则删除最后一个项目。
    矩形状态
    删除列表中第四个项目之后的任何项目。
  5. 如果 shape 属性表示 rectangle state,并且列表中的第一个数字在数值上大于列表中的第三个数字,则交换这两个数字。

  6. 如果 shape 属性表示 rectangle state,并且列表中的第二个数字在数值上大于列表中的第四个数字,则交换这两个数字。

  7. 如果 shape 属性表示 circle state,并且列表中的第三个数字小于或等于零,则形状为空;返回。

  8. 现在,元素表示的形状是下面列表中与 shape 属性状态对应的条目指示的形状。

    圆形状态

    xcoords 中的第一个数字,y 为第二个数字,r 为第三个数字。

    该形状是一个圆,其圆心距离图像左边缘 xCSS像素,距离图像顶边缘 yCSS像素,其半径为 rCSS像素

    默认状态

    该形状是一个完全覆盖整个图像的矩形。

    多边形状态

    xicoords 中的第 (2i) 个条目,yicoords 中的第 (2i+1) 个条目(coords 中的第一个条目是索引为 0 的条目)。

    the coordinates 为 (xi, yi),以从图像左上角测量的 CSS像素 进行解释,对于从 0 到 (N/2)-1 的所有整数 i 值,其中 Ncoords 中项目的数量。

    该形状是一个多边形,其顶点由 the coordinates 给出,其内部使用奇偶规则确定。 [GRAPHICS]

    矩形状态

    x1coords 中的第一个数字,y1 为第二个数字,x2 为第三个数字,y2 为第四个数字。

    该形状是一个矩形,其左上角由坐标 (x1, y1) 给出,其右下角由坐标 (x2, y2) 给出,这些坐标被解释为从图像左上角测量的 CSS像素

    出于历史原因,坐标必须相对于显示的图像进行解释,在 CSS 'width''height' 属性(或对于非 CSS 浏览器,图像元素的 widthheight 属性——CSS 浏览器将这些属性映射到上述 CSS 属性)引起的任何拉伸之后。

    浏览器缩放功能和使用 CSS 或 SVG 应用的转换不会影响坐标。

指向设备与一组根据上述算法分层的形状关联的图像交互必须导致相关的用户交互事件首先触发到覆盖指向设备指示的点的最顶层形状(如果有),或者触发到图像元素本身(如果没有形状覆盖该点)。用户代理还可以允许表示 超链接 的各个 area 元素被选中和激活(例如,使用键盘)。

因为 map 元素(及其 area 元素)可以与多个 img 元素关联,所以 area 元素可能对应于文档的多个 可聚焦区域

图像映射是 动态的;如果 DOM 发生变异,则用户代理必须表现得好像它重新运行了图像映射的算法。