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

如何在HTML全屏图片上划分区域实现点击弹窗等交互?

如何给全屏图片添加可点击的交互区域

你想要给全屏图片划分可点击区域,触发不同操作?这其实很容易实现,我给你两种常用的方案,结合你现有的Materialize框架来做,直接就能用:

方案一:使用HTML原生<map>+<area>标签(推荐简单场景)

这是HTML自带的图片热区功能,不需要额外JS,适合规则形状的区域(矩形、圆形、多边形)。

修改后的完整代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  <meta name="viewport" content="width=device-width, initial-scale=1"/>
  <title>Parallax Template - Materialize</title>
  <!-- CSS -->
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
  <link href="css/materialize.css" type="text/css" rel="stylesheet" media="screen,projection"/>
  <link href="css/style.css" type="text/css" rel="stylesheet" media="screen,projection"/>
  <style>
    /* 让图片全屏显示 */
    img.fullscreen {
      width: 100vw;
      height: 100vh;
      object-fit: cover;
      display: block;
    }
  </style>
</head>
<body>
  <!-- 给图片加上usemap属性,关联对应的map -->
  <img src="background1.jpg" alt="Unsplashed background img 1" class="fullscreen" usemap="#imageMap">

  <!-- 定义热区map -->
  <map name="imageMap">
    <!-- 右上角矩形区域:coords是 左,上,右,下 坐标,支持百分比适配不同屏幕 -->
    <area shape="rect" coords="80%,0,100%,20%" alt="右上角区域" href="#" onclick="showModal()">
    <!-- 额外示例:右下角圆形区域 -->
    <area shape="circle" coords="90%,90%,5%" alt="右下角圆形" href="#" onclick="alert('点击了右下角圆形区域')">
  </map>

  <!-- Materialize的弹窗组件 -->
  <div id="modal1" class="modal">
    <div class="modal-content">
      <h4>右上角区域被点击啦!</h4>
      <p>这是你触发的弹窗内容~</p>
    </div>
    <div class="modal-footer">
      <a href="#!" class="modal-close waves-effect waves-green btn-flat">关闭</a>
    </div>
  </div>

  <!-- Scripts-->
  <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
  <script src="js/materialize.js"></script>
  <script src="js/init.js"></script>
  <script>
    // 初始化Materialize弹窗
    $(document).ready(function(){
      $('.modal').modal();
    });

    // 触发弹窗的函数
    function showModal() {
      $('#modal1').modal('open');
    }
  </script>
</body>
</html>

关键说明

  • usemap="#imageMap":把图片和<map>标签绑定,实现热区关联
  • <area>标签的shape可选rect(矩形)、circle(圆形)、poly(多边形),coords支持百分比或像素定义区域范围
  • 直接复用Materialize的Modal组件,完美契合你的现有技术栈

方案二:使用绝对定位的透明Div(适合复杂交互/自定义样式)

如果需要更灵活的交互(比如hover效果、自定义异形区域),可以用绝对定位的透明div覆盖在图片上:

核心代码示例

<body>
  <div class="image-container">
    <!-- 全屏图片作为容器背景 -->
    <img src="background1.jpg" alt="Unsplashed background img 1" class="fullscreen">
    <!-- 右上角可点击区域 -->
    <div class="click-area top-right" onclick="showModal()"></div>
    <!-- 左下角可点击区域 -->
    <div class="click-area bottom-left" onclick="alert('点击了左下角区域')"></div>
  </div>

  <!-- 弹窗部分和方案一一致 -->
  <div id="modal1" class="modal">...</div>

  <style>
    .image-container {
      position: relative;
      width: 100vw;
      height: 100vh;
    }
    img.fullscreen {
      width: 100%;
      height: 100%;
      object-fit: cover;
    }
    .click-area {
      position: absolute;
      cursor: pointer;
      /* 透明背景,hover时可添加视觉反馈 */
      background-color: rgba(255,255,255,0.1);
      transition: background-color 0.3s;
    }
    .click-area:hover {
      background-color: rgba(255,255,255,0.3);
    }
    .top-right {
      top: 0;
      right: 0;
      width: 20%;
      height: 20%;
    }
    .bottom-left {
      bottom: 0;
      left: 0;
      width: 25%;
      height: 30%;
    }
  </style>

  <!-- 脚本部分和方案一一致 -->
</body>

优势

  • 可以给区域添加hover、active等视觉反馈
  • 支持任意异形区域(通过border-radius或clip-path实现)
  • 更容易结合JS实现复杂交互逻辑

两种方案都能满足你的需求,根据实际场景选择即可~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:15:19