现在我们将学习如何设置图像映射,先讨论他的缺点。
本文仅讨论客户端图像映射。不要使用服务器端图像映射,这需要用户拥有鼠标。
当你在{{htmlelement('a')}}标签中嵌套图像,整个图像是链接到一个网页的。但在图像映射中,包含多个活动区域(称为“热点”),可以链接到不同的资源地址。
图像映射原本非常流行于导航策略,但是前提需要考虑它的性能和无障碍。
Text links (perhaps styled with CSS) 比图像映射更具优势:文本链接更轻量级、好维护、更易于 SEO,而且支持更多形式需求的访问(如,屏幕阅读器、纯文本浏览器、翻译服务等)。
不是所有图片都合适。
alt
属性是必须的,但很多人注意不到。插入图片的方式 和通常一样 (用 {{htmlelement("img")}} 标签 和 alt
文本). 如果图片只是用作导航容器,你可以设置图片的 alt=""
,改在后面 {{htmlelement('area')}} 的 alt
中提供合适的文本。
你将需要一个特殊的 usemap
属性。为图像映射提供一个唯一标识,这个标识不能包含空格。将这个标识 (preceded by a hash) 作为 usemap
属性的值:
在这一步中,将所有代码放置 {{htmlelement('map')}} 标签中。<map>
只需要一个属性,设置 name
和上面 usemap
属性一样的 map 值:
在<map>
元素中,我们需要嵌套 {{htmlelement('area')}} 元素。一个 <area>
元素对应一个热点.。为保持键盘导航的直观,请确保<area>
的源顺序和视觉上的热点顺序一致。
<area>
元素是空元素,但是需要包含 4 个属性:
: shape
有 4 个值:circle
, rect
, poly
, and default
. ( default
<area>
表示除去你定义的其他热点的剩余空间.) 根据你选择的形状需要在 coords
中提供对应的坐标信息。
坐标用 CSS 像素 px 表示。
In case of overlap, source order carries the day.
alt
文本仅在图像不可用时显示。请参阅我们的guidelines for writing accessible link text。如果 href
属性为空并且整个图像已经具备了 alt
属性,则可以设置 alt=""
。你还并没有完成除非你很严格的在多个浏览器和终端测试图像映射功能。尝试仅用键盘操作。尝试关掉图片。
如果你的图像映射宽度大于 240px,你将需要进一步调整来适应网站的响应式。仅调整小屏幕下的图片是不够的,因为不变的坐标无法适应这样的图像。
如果必须使用图像映射,你可以看看Matt Stow's jQuery plugin.。另外,Dudley Storey 示范了一种方法 use SVG for an image map effect,以及后来的ombined SVG-raster hack for bitmap images.