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

如何实现点击<area>热区时弹出带图文内容的自定义弹窗

解决方案

你已经引入了Featherlight弹窗组件,适配<area>标签点击弹窗的需求非常简单,以下是两种可直接用的实现方案:

方案1:提前定义弹窗内容(适合内容差异大的场景)

  1. 首先在页面任意位置添加每个热区对应的隐藏内容块,id和<area>标签的href锚点保持一致:
<!-- 炼油厂对应弹窗内容 -->
<div id="refinery" class="popup-content" style="display:none;">
  <h3>West Side Refinery</h3>
  <p>2 Tracks, 10 cars</p>
  <img src="./images/refinery.jpg" alt="Refinery">
</div>
<!-- 废料场对应弹窗内容 -->
<div id="scrapyard" class="popup-content" style="display:none;">
  <h3>Scrapyard</h3>
  <p>3 Tracks, 8 cars</p>
  <img src="./images/scrapyard.jpg" alt="Scrapyard">
</div>
<!-- 其余热区的内容块按同样规则补充即可 -->
  1. 在你现有的JS引入代码后面添加这段初始化代码即可:
$(function() {
  // 直接给所有area标签绑定featherlight弹窗,会自动读取href对应的隐藏内容渲染
  $('area').featherlight({
    closeOnClick: 'background', // 点击弹窗背景自动关闭
    closeIcon: '×'
  });
})

方案2:动态生成弹窗内容(更省代码,适合统一结构的弹窗)

如果所有弹窗的结构都是统一的(标题+说明文字+图片),不需要单独写隐藏内容块,直接加这段JS即可:

$(function() {
  $('area').on('click', function(e) {
    e.preventDefault(); // 阻止默认锚点跳转
    const $currentArea = $(this);
    // 动态拼接弹窗内容,可根据你要展示的字段调整
    const popupContent = `
      <h3>${$currentArea.attr('alt')}</h3>
      ${$currentArea.attr('title') ? `<p>${$currentArea.attr('title')}</p>` : ''}
      <img src="./images/${$currentArea.attr('target')}.jpg" alt="${$currentArea.attr('alt')}">
    `;
    // 调用featherlight打开弹窗
    $.featherlight(popupContent, {
      closeOnClick: 'background'
    });
  })
})

只需要提前把所有热区的图片命名为和<area>的target属性一致的文件名,放在对应路径下即可,不需要额外写HTML内容块。

如果需要调整弹窗样式,直接覆盖featherlight的默认CSS即可改成你要的谷歌地图弹窗样式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:18:03