的 href 不支持纯 #id 锚点,必须用完整 url(如 ./page.html#section1)或 javascript:void(0) 配合 onclick 滚动;usemap 值须带 # 而 map[name] 不能带,且大小写严格匹配;coords 数量须为偶数;图片缩放会导致热区偏移,移动端需额外适配。

area 的 href 必须是有效 URL,纯 #id 会失效
很多人想用 <area shape="rect" coords="0,0,100,100" href="#section1"> 实现点击图片热点跳转到页面内锚点,结果完全没反应。这不是浏览器 bug,而是规范限制:href 在 <area> 中不支持纯锚点语法。即使目标元素存在 id="section1",且 <map name="m"></map> 与 <img usemap="#m"> 匹配,多数浏览器(尤其是 Safari 和旧版 Edge)仍会静默忽略该区域。
真正有效的写法只有两类:
-
href="./current-page.html#section1"(相对路径 + 锚点,需确保当前页名准确) -
href="javascript:void(0)"配合onclick手动滚动,例如:onclick="document.getElementById('section1').scrollIntoView()"
注意:写成 href="#" 或空字符串 href="" 会导致浏览器尝试加载当前目录下的 index.html 或发起无效请求,控制台常报 Failed to load resource。
usemap 和 map name 必须严格一致且带 # 前缀
<img> 的 usemap 属性值必须以 # 开头,而对应 <map></map> 的 name 属性值**不能**带 #。大小写也必须完全匹配,否则整个图像映射失效,所有 <area> 都不可点击。
正确示例:
@@##@@ <map name="floor-map"><area shape="rect" coords="10,20,100,80" href="room1.html"></map>
常见错误:
-
usemap="floor-map"(漏掉#)→ 不触发映射 -
<map name="Floor-Map"></map>但usemap="#floor-map"(大小写不一致)→ Chrome 可能容忍,Safari 直接失效 -
<map name="floor-map"></map>写在<img src="floorplan.png" usemap="#floor-map">之后但不在同一 DOM 上下文(如被 Vue/React 动态插入且未挂载完成)→ 初始渲染时无响应
coords 坐标数必须为偶数,poly 形状尤其容易出错
<area shape="poly"> 的 coords 是一串逗号分隔的数字,每两个数字构成一个顶点(x, y),因此总数必须为偶数。写成奇数个(比如 coords="10,20,30,40,50")会导致部分浏览器(特别是 Safari 和 iOS WebKit)直接跳过该区域,不渲染也不响应点击。
其他要点:
-
shape="rect"要求恰好 4 个值:x1,y1,x2,y2(左上 → 右下) -
shape="circle"要求恰好 3 个值:cx,cy,r - 坐标基于原始图片尺寸,不是容器或视口尺寸;图片缩放后热区位置会偏移,无法自适应——这是最常被忽略的兼容性陷阱
调试建议:用开发者工具检查 <area> 元素是否被浏览器解析(右键审查元素,看是否出现在 DOM 中),再确认其 coords 属性值是否被正确解析为数字数组(可通过 JS 打印 area.coords.split(',').length 验证)。
移动端热区尺寸和 fallback 方案不可省略
移动端触摸操作要求最小可点击区域 ≥ 44×44px(iOS 人机接口指南),但 <area> 的坐标是按原始图尺寸定义的。如果图片在响应式布局中被压缩到 200px 宽,而你用的是 2000×1500 原图定义的 coords,那实际热区可能只有几像素宽,用户根本点不中。
可行对策:
- 用
<picture></picture>+srcset提供多分辨率图片,并为每套尺寸单独配置<map></map>(维护成本高) - 改用 SVG 替代
<img> + <map></map>:SVG 支持原生响应式、矢量缩放、事件绑定更可靠 - 至少加一层 JS fallback:监听图片容器点击,用
event.offsetX/Y换算点击位置,再比对预设区域范围(需自行实现矩形/圆形判定逻辑)
没有适配的 <area> 在手机上基本等于不可用,这点在上线前必须实机验证,不能只看桌面端表现。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











