唯一可靠方案是+,因其他方式语义弱、无障碍差、响应式易失效;usemap绑定失败主因是字符串严格匹配(大小写敏感、#不可省略)、map须同文档内、图片加载完成前Safari忽略area;coords基于原始像素尺寸,CSS缩放致漂移;需alt属性、cursor:pointer、target="_blank" rel="noopener noreferrer"、移动端热区≥44×44px;结构隔离与尺寸控制比shape更关键。

唯一可靠方案是 + ,其他方式不是真热区,而是用 CSS/JS 模拟,语义弱、无障碍差、响应式易失效。
为什么 usemap 绑定总失败
绑定失败是广告热区“点不动”的首要原因,本质是浏览器只做字符串严格匹配:
-
中的#ad-map必须和的name完全一致——大小写敏感,#不可省略,也不能多加空格 -
必须在 DOM 中位于同一文档内,不能跨,也不能靠 JS 动态插入后不触发重绘 - 图片未加载完成时,Safari 会直接忽略
;建议加loading="eager"或等img.onload后再启用交互
coords 坐标怎么填才不偏移
所有坐标都基于图片原始像素尺寸(img.naturalWidth / img.naturalHeight),CSS 缩放、width/height 属性都会导致热区漂移:
- 矩形:
shape="rect"→coords="left,top,right,bottom"(4 个整数,无空格) - 圆形:
shape="circle"→coords="centerX,centerY,radius"(3 个整数) - 多边形:
shape="poly"→coords="x1,y1,x2,y2,x3,y3,..."(偶数个整数,顺序闭合) - 别手算 coords:用在线工具如 ImageMap Generator 导出,人眼对齐误差 >5px 就点不中
移动端和无障碍必须显式处理
广告投放常忽略这两点,结果就是“PC 能点,手机点不了”或“屏幕阅读器读不出”:
- 每个
必须带alt属性(不是title),例如alt="点击了解优惠详情";空alt=""会被读作“无内容” - iOS Safari 默认不显示手型光标,需给
加style="max-width:90%" - 如需新窗口打开,必须写
target="_blank" rel="noopener noreferrer";缺rel是安全漏洞 - 移动端热区最小建议 44×44px,小区域在真机上触控精度极低
真正难的不是画几个区域,而是让它们在不同 DPR、不同缩放、不同加载时机下始终精准响应—— 的坐标是静态快照,它不理解布局,只认原始像素。所以结构隔离(每张广告图配唯一 usemap)和尺寸控制(禁用 CSS 缩放,用 srcset 提供多倍图),比写对 shape 更关键。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











