菜鸟科技网

创建热区链接?

什么是热区链接?

热区链接,也叫图像映射,是在一张图片上定义一个或多个可点击的“热点”区域,当用户点击这些区域时,浏览器会根据预设的链接跳转到相应的网页。

创建热区链接?-图1
(图片来源网络,侵删)

常见应用场景:

  • 网站导航图: 比如一张公司大楼的平面图,点击不同的部门(如市场部、研发部)可以跳转到对应的介绍页面。
  • 产品展示图: 一张手机产品图,点击摄像头可以跳转到摄像头详情页,点击屏幕可以跳转到屏幕技术介绍页。
  • 信息图表: 一张复杂的信息图表,点击不同的数据模块可以查看详细数据。
  • 地图导航: 一张世界地图或中国地图,点击不同的省份可以跳转到该省的旅游信息页。

建立热区链接的两种主要方法

主要有两种方法可以实现热区链接:使用 HTML 的 <map><area> 标签(传统方法),以及 使用现代 CSS 和 JavaScript(更灵活的方法)


使用 HTML <map><area> 标签(最常用、最标准)

这是专门为图像映射设计的 HTML 标准方法,兼容性非常好,也是搜索引擎相对能理解的方式。

核心概念

  1. <img> 插入你的图片。
  2. <map> 定义一个“地图”区域,并给它一个唯一的 nameid
  3. <area> 在 <map> 标签内部,定义一个或多个可点击的“热点”区域。
  4. 关联: 通过 <img> 标签的 usemap 属性,将图片与对应的 <map> 关联起来。

详细步骤与代码示例

假设我们有一张 sitemap.png 的图片,我们想在上面创建三个热区:

创建热区链接?-图2
(图片来源网络,侵删)
  • 左上角的“首页”链接到 index.html
  • 右上角的“关于我们”链接到 about.html
  • 底部的“联系方式”链接到 contact.html

步骤 1:准备图片并确定坐标

这是最关键的一步,你需要知道每个热区区域的精确坐标,坐标格式是 x, y,表示区域左上角的像素位置。

  • 如何获取坐标?
    • 推荐工具: 使用专门的图像热区编辑器,如 Image Map Editor,你只需上传图片,用鼠标在图片上框选区域,工具会自动计算出坐标。
    • 手动估算: 如果你的区域是规则的(矩形、圆形),可以通过图像编辑软件(如 Photoshop、GIMP)查看鼠标位置来估算。

步骤 2:编写 HTML 代码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">热区链接示例</title>
    <style>
        body { font-family: sans-serif; text-align: center; }
        img { max-width: 100%; height: auto; border: 1px solid #ccc; }
    </style>
</head>
<body>
    <h1>网站导航图</h1>
    <!-- 
      1. <img> 标签的 usemap 属性值为 "#地图名称"。
         注意: "#" + map 标签的 name 或 id 属性值。
    -->
    <img src="sitemap.png" alt="网站导航图" usemap="#siteNavigationMap">
    <!-- 
      2. <map> 标签定义了一个图像地图。
         name 属性用于与 <img> 的 usemap 关联。
    -->
    <map name="siteNavigationMap">
        <!-- 
          3. <area> 标签定义一个可点击区域。
             shape: 区域形状 ("rect", "circle", "poly", "default")
             coords: 坐标值
             href: 链接地址
             alt: 链接的替代文本(非常重要,可访问性!)
        -->
        <!-- 矩形区域:首页 (x1, y1, x2, y2) -->
        <area shape="rect" coords="20, 30, 150, 100" href="index.html" alt="链接到首页">
        <!-- 矩形区域:关于我们 -->
        <area shape="rect" coords="200, 30, 330, 100" href="about.html" alt="链接到关于我们页面">
        <!-- 多边形区域:联系方式 (需要多个点 x1,y1,x2,y2,...) -->
        <area shape="poly" coords="50, 150, 100, 200, 150, 150, 100, 180" href="contact.html" alt="链接到联系方式页面">
    </map>
    <p>点击图片上的不同区域进行导航。</p>
</body>
</html>

<area> 标签的重要属性

属性 描述
shape rect, circle, poly, default 定义热区的形状。
coords 坐标值 定义热区的位置和尺寸。
href URL 定义热区链接到的地址。
alt 文本 非常重要! 定义热区的替代文本,用于屏幕阅读器,提高可访问性。
target _blank, _self, _parent, _top 定义在何处打开链接(新标签页、当前页等)。

coords 属性详解

  • shape="rect" (矩形):
    • 格式:coords="x1, y1, x2, y2"
    • (x1, y1) 是矩形左上角的坐标。
    • (x2, y2) 是矩形右下角的坐标。
  • shape="circle" (圆形):
    • 格式:coords="center_x, center_y, radius"
    • (center_x, center_y) 是圆心的坐标。
    • radius 是圆的半径(像素)。
  • shape="poly" (多边形):
    • 格式:coords="x1, y1, x2, y2, x3, y3, ..."
    • 需要按顺序列出多边形每个顶点的坐标,至少需要 3 个点(一个三角形)。

使用 CSS 和 JavaScript(更现代、更灵活)

这种方法不使用 <map><area>,而是通过 CSS 定位一个或多个覆盖在图片上的 <a> 链接元素,这种方法在处理复杂或不规则形状时非常强大。

核心概念

  1. 容器: 一个 position: relative<div> 包裹着图片。
  2. 链接: 多个 position: absolute<a> 标签作为“热区”层叠在图片上。
  3. 定位: 使用 top, left, width, height 等 CSS 属性来精确定位每个热区。

详细步骤与代码示例

我们使用和上面一样的例子。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">CSS/JS 热区链接示例</title>
    <style>
        body { font-family: sans-serif; text-align: center; }
        /* 1. 容器:设置为相对定位,作为子元素的定位基准 */
        .image-container {
            position: relative;
            display: inline-block; /* 让容器大小适应图片 */
            border: 1px solid #ccc;
        }
        /* 2. 图片:设置最大宽度,高度自动 */
        .image-container img {
            max-width: 100%;
            height: auto;
            display: block; /* 移除图片底部间隙 */
        }
        /* 3. 热区链接:绝对定位,覆盖在图片上 */
        .hotspot {
            position: absolute;
            border: 2px dashed red; /* 用虚线框显示热区位置,发布时移除 */
            background-color: rgba(255, 0, 0, 0.1); /* 半透明红色背景,发布时移除 */
            text-decoration: none;
            color: white;
            padding: 5px;
            font-size: 12px;
        }
        /* 定义各个热区的具体位置和大小 */
        #home-link {
            top: 30px;
            left: 20px;
            width: 130px; /* 150 - 20 */
            height: 70px; /* 100 - 30 */
        }
        #about-link {
            top: 30px;
            left: 200px;
            width: 130px; /* 330 - 200 */
            height: 70px; /* 100 - 30 */
        }
        #contact-link {
            /* 对于不规则形状,可以用一个足够大的矩形来近似 */
            top: 150px;
            left: 50px;
            width: 100px;
            height: 50px;
        }
    </style>
</head>
<body>
    <h1>网站导航图 (CSS/JS 方法)</h1>
    <!-- 
      容器 div,用于包裹图片和所有热区链接
    -->
    <div class="image-container">
        <img src="sitemap.png" alt="网站导航图">
        <!-- 热区链接 1: 首页 -->
        <a href="index.html" class="hotspot" id="home-link" alt="链接到首页">首页</a>
        <!-- 热区链接 2: 关于我们 -->
        <a href="about.html" class="hotspot" id="about-link" alt="链接到关于我们页面">关于我们</a>
        <!-- 热区链接 3: 联系方式 -->
        <a href="contact.html" class="hotspot" id="contact-link" alt="链接到联系方式页面">联系方式</a>
    </div>
    <p>点击图片上的不同区域进行导航。</p>
</body>
</html>

两种方法的优缺点对比

特性 HTML <map> / <area> 方法 CSS / JavaScript 方法
兼容性 非常好,支持所有浏览器。 非常好,现代浏览器支持完美。
可访问性 优秀<area>alt 属性被屏幕阅读器很好地支持。 一般,需要额外努力(如 ARIA 标签)才能达到与 <map> 同等水平的可访问性。
SEO 较好,搜索引擎能更好地理解图片上的结构化链接。 较差,搜索引擎可能无法正确识别这些通过 CSS 定位的链接。
实现复杂度 简单,对于标准形状(矩形、圆形)非常直接。 稍复杂,需要手动计算和设置每个热区的 top, left, width, height
灵活性 有限,难以实现非常不规则的、非多边形的形状。 极高,可以实现任何形状,甚至可以结合 SVG 或 Canvas 创建极其复杂的交互。
响应式设计 有挑战,图片缩放时,热区坐标不会自动调整,需要 JavaScript 或 vw/vh 单位配合。 非常容易,可以使用百分比或 vw/vh 等相对单位,使热区随图片自适应缩放。

如何选择?

  • 选择 <map> / <area> 方法,

    • 你需要最佳的可访问性和 SEO 表现。
    • 你的热区形状是标准的矩形、圆形或多边形。
    • 项目要求兼容非常老的浏览器。
    • 这是一个相对静态的导航图,不需要复杂的响应式处理。
  • 选择 CSS / JavaScript 方法,

    • 你需要实现非常不规则的、动态的或复杂的交互效果。
    • 你对响应式设计有极高的要求,希望热区能完美适配各种屏幕尺寸。
    • 你不担心 SEO 和可访问性(或者你有能力通过额外手段解决它们)。
    • 你正在使用现代前端框架(如 React, Vue),这种 DOM 操作方式更符合组件化思想。

对于大多数常规网站导航图,使用 HTML <map><area> 标签是首选,因为它简单、标准且对 SEO 和可访问性友好,只有当你需要更高的灵活性和响应式能力,并且愿意在 SEO 和可访问性上做一些权衡时,才考虑使用 CSS 和 JavaScript 的方法。

分享:
扫描分享到社交APP
上一篇
下一篇