You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现单张图片不同区域独立悬停显示对应人物描述文本

合照示例

实现方案

不用硬磕area map,对新手最友好的方案是绝对定位热区+CSS悬停,零复杂逻辑,位置好调,提示样式可以完全自定义,不会受原生tooltip的样式限制。

方案1:纯HTML+CSS实现(零JS,新手首选)

核心逻辑非常简单:

  • 把照片放在一个设为相对定位的容器里
  • 给每个人物对应位置加透明的绝对定位块(也就是热区,大小刚好盖住人物的可悬停范围)
  • 人物描述卡片默认隐藏,鼠标移到对应热区时自动弹出,位置、样式、动画都可以自己随便改
    直接抄下面的代码改参数就行:
<!-- 外层容器必须加相对定位 -->
<div class="photo-wrap" style="position: relative; display: inline-block;">
  <!-- 插入你的原图 -->
  <img src="https://i.sstatic.net/G1uWk.png" alt="团队合照">

  <!-- 第一个人物热区,调整top/left/width/height对准对应人物 -->
  <div class="hot-spot" style="position: absolute; top: 22%; left: 14%; width: 120px; height: 310px;">
    <!-- 悬停显示的描述卡 -->
    <div class="tip-card">
      <strong>张三</strong>
      <p>前端开发,负责交互模块实现</p>
    </div>
  </div>

  <!-- 第二个人物热区,同理调整位置尺寸 -->
  <div class="hot-spot" style="position: absolute; top: 19%; left: 36%; width: 130px; height: 320px;">
    <div class="tip-card">
      <strong>李四</strong>
      <p>产品经理,负责需求梳理对接</p>
    </div>
  </div>
  <!-- 剩下的人物按相同格式加就行 -->
</div>

<style>
/* 提示卡默认隐藏 */
.tip-card {
  display: none;
  position: absolute;
  /* 控制提示卡弹出位置,示例是在人物上方居中 */
  bottom: 105%;
  left: 50%;
  transform: translateX(-50%);
  background: #fff;
  padding: 10px 14px;
  border-radius: 6px;
  box-shadow: 0 3px 14px rgba(0,0,0,0.15);
  width: 160px;
  z-index: 99;
  pointer-events: none; /* 避免提示卡挡住热区触发悬停 */
  font-size: 14px;
}
/* 鼠标移到热区时显示对应提示卡 */
.hot-spot:hover .tip-card {
  display: block;
}
/* 调试用样式,对准位置后删掉即可 */
.hot-spot {
  /* border: 1px solid red; 打开这行能看到热区边框,方便对准人物 */
  cursor: pointer;
}
.tip-card p {
  margin: 4px 0 0;
  color: #666;
}
</style>

调位置的时候打开注释的红边框样式,直接改top、left和宽高的数值,等边框刚好框住对应人物再把调试样式删掉就行,不用对着原图算坐标,比area map省事很多。

之前用area map失败的常见原因

如果还是想尝试area map方案,先排查这几个高频坑:

  • <img>标签必须加usemap属性,属性值要和<map>标签的name值完全对应,比如<img usemap="#teamMap">要匹配<map name="teamMap">
  • coords的坐标是按图片原始像素尺寸算的,只要你给图片加了CSS缩放、响应式适配,坐标就会直接错位,这也是绝大多数人用area map做不对的核心原因
  • 不要用area自带的title属性做提示,这个就是原生普通tooltip,样式完全改不了,要自定义效果必须自己绑事件控制div显隐

进阶:不规则轮廓热区

如果想要热区完全贴合人物轮廓,不用矩形块:

  • 普通场景直接给热区加border-radius做圆角,或者用CSS裁剪属性调形状足够用
  • 等基础方案做熟了,再了解SVG热区方案就行,逻辑和绝对定位块一致,只是支持自定义任意形状的热区。

内容的提问来源于stack exchange,提问作者Faide Mercer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 00:09:31