是定义图片可点击区域的容器,不渲染; 是其子标签,通过 shape 和 coords 声明矩形、圆形或多边形选区,需绑定带 usemap="#id" 的 ,坐标基于原图尺寸,常配合 data-* 属性与事件委托实现交互逻辑。

什么是 和 ?
HTML 的 本身不渲染,它只是给图片定义可点击区域的“坐标规则集”; 是其中真正声明选区的标签,必须嵌套在 内。关键点在于:它只绑定到一张 上,且该 必须有 usemap 属性,值为 #map-id(注意开头的 #)。
常见错误是漏掉 #,比如写成 usemap="game-map" —— 这会导致整个映射完全失效,点击毫无反应。
area 的 shape 和 coords 怎么配?
游戏选区常用 shape="rect"(矩形)、"circle"(圆形)、"poly"(多边形)。它们的 coords 格式严格固定:
-
rect:左上 x,y + 右下 x,y,如coords="10,20,110,120" -
circle:圆心 x,y + 半径,如coords="60,70,50" -
poly:依次列出所有顶点 x,y,如coords="20,30,80,10,100,60,60,90"
坐标系原点在图片左上角(0,0),x 向右递增,y 向下递增。如果图片缩放了(比如用 CSS 设置了 width),coords 仍需按原始图片尺寸写——否则选区会严重偏移。建议用原始尺寸图,或用 JS 动态换算。
怎么让每个选区触发不同游戏逻辑?
直接给 加 onclick 最简单,但更推荐用事件委托,避免重复绑定:
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
<map name="game-map"><area shape="rect" coords="0,0,100,100" data-zone="forest"> <area shape="circle" coords="200,150,40" data-zone="castle"></map> @@##@@
然后用 JS 监听:
document.getElementById('game-map-img').addEventListener('click', e => {
const area = e.target;
if (area.tagName === 'AREA') {
const zone = area.dataset.zone;
if (zone === 'forest') startForestQuest();
else if (zone === 'castle') openCastleGate();
}
});
注意:e.target 是实际被点击的 ,不是 ;但某些旧浏览器可能冒泡异常,加个 
if (e.target.tagName === 'AREA') 更稳妥。
为什么点击没反应?检查这三点
映射区域游戏最容易卡在这几个地方:
-
的usemap值没带#,或者 ID 拼写和不一致 - 图片路径 404 或加载失败——
不会报错,但区域全失效 - CSS 给
设了pointer-events: none,或父容器遮挡(比如用了z-index覆盖)
调试时打开浏览器开发者工具,选中 元素,看右侧面板是否显示 “Mapped areas”;没有就说明映射未生效,优先查 usemap 和 name 是否匹配。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










