usemap="#xxx"必须与的name属性完全一致(含大小写、连字符等),coords需按原始像素填写且响应式下须用JS动态重算缩放比,area必须含href和alt才具备语义与兼容性。

直接用 <map></map> + @#@#@#@#@#@#@#@#@#@0)量取真实像素位置。
高清图响应式下热区全偏移?JS 动态重算 coords 是唯一解
原生 <map></map> 没有响应式能力。只要图片用了 max-width: 100%、vw 或任何 CSS 缩放,热区就一定错位——因为 coords 始终按原始像素计算,而视觉区域已变小。
- 记录原始尺寸:
const naturalW = img.naturalWidth; const naturalH = img.naturalHeight; - 算缩放比:
const scaleX = img.offsetWidth / naturalW; const scaleY = img.offsetHeight / naturalH; - 遍历每个
<area>,按shape类型分别处理:
—rect:四个值都乘对应缩放比
—circle:cx×scaleX,cy×scaleY,r×Math.min(scaleX, scaleY)(避免拉伸)
—poly:每对x,y分别 ×scaleX/scaleY - 监听
img.addEventListener('load', updateCoords)和window.addEventListener('resize', updateCoords)
不要指望 CSS 能修复,也不要依赖 jQuery 插件(如 rwdImageMaps)自动适配——它底层仍是这套逻辑,只是帮你封装了。真正容易被忽略的是:你得先确保图片加载完成,才能读到 naturalWidth;否则 naturalWidth 为 0,缩放比崩盘。
将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。
area 必须带 href 和 alt,否则语义与兼容性双崩
缺 href,点击无跳转行为;缺 alt,不仅屏幕阅读器无法读出功能,旧版 Safari 会直接忽略该 <area>。这不是可选项,是硬性要求。
-
href必须是有效地址:相对路径("room201.html")、绝对 URL("https://example.com/kitchen")、mailto:、tel:都可以;javascript:void(0)可用,但纯href="#"不触发默认行为 -
alt必须描述该区域用途,例如alt="主卧入口"或alt="卫生间开关",不能留空或写“点击此处” - 如果要用 JS 完全接管(比如发请求、弹窗),记得在
onclick里调event.preventDefault(),否则页面可能闪动或跳空地址
最后提醒一句:如果你的高清图是 Canvas 导出、动态拼接或来自 CMS,千万别在前端靠 JS 测量坐标——导出时就要把各区块原始像素位置存下来,作为元数据注入 HTML。运行时测量,精度和稳定性都不可控。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










