`

图片热点area,map的用法(H5)

    博客分类:
  • HTML
阅读更多

最近在工作中遇到html标签<map>的使用,记录下(图像地图 / 图像热点 )<map>的使用过程:

 

标准定义:

定义一个客户端图像映射。图像映射(image-map)指带有可点击区域的一幅图像。

通俗理解:

<map>是在图片上面创建热点的标签,所谓图片热点就是给你一张图片然后你可以设置点击图片不同的位置进入不同的链接!

 

兼容:所有主流浏览器都支持 <map> 标签与<area>标签

 

场景:

①比如一张图片的静态页!如果你不会切图做静态页,那么就可以用一张效果图来实现!

②<area>标记主要用于图像地图,通过该标记可以在图像地图中设定作用区域(又称为热点),这样当用户的鼠标移到指定的作用区域点击时,会自动链接到预先设定好的页面

③在一些购物网站,我们总能看到一张大图,上面铺满充满诱惑的礼品,当我们轻轻地用鼠标单击一下,就跳转到这个宝贝的页面。以后再也不用去找美工切图,并且也不用为兼容这种浏览器而发愁了。

 

一、area标签实现图片局部点击事件

原理:在图片上设置链接的area标签,产生图片的局部点击事件效果~

参考例子:

 

<map name="planetmap" id="planetmap">
    <area
            shape="circle"
            coords="180,139,14"
            href ="http://www.w3school.com.cn/example/html/venus.html"
            target ="_blank"
            alt="Venus" />

    <area
            shape="circle"
            coords="129,161,10"
            href ="http://www.w3school.com.cn/example/html/mercur.html"
            target ="_blank"
            alt="Mercury" />

    <area
            shape="circle"
            coords="-200,200,310"
            href ="http://www.w3school.com.cn/example/html/sun.html"
            target ="_blank"
            alt="Sun" />

</map>
<p>
    <b>注释:</b>img 元素中的 "usemap" 属性引用 map 元素中的 "id" 或 "name" 属性(根据浏览器),
    所以我们同时向 map 元素添加了 "id" 和 "name" 属性。
</p>

 

 

参数说明:

(1)shape:可点击区域形状

  ①rect:矩形

  ②circle:圆形

  ③poligon:多边形

(2)coords:可点击区域坐标

  ①当shape是矩形时,此值是4个坐标值,前两个为坐上坐标(x,y),后两个为右下坐标

  ②当shape是圆形时,此值是3个坐标值,前两个为圆形的坐标,最后一个为半径

  ③当shape是多边形时,coords="x1, y1,x2,y2 ......",各顶点坐标依次为(X1,y1)、(X2,y2)、(x3,y3) ......。

(3)usemap:使用哪个map的区域点击事件

 

【注释】:area 元素永远嵌套在 map 元素内部。area 元素可定义图像映射中的区域。

【注释】:<img>中的 usemap 属性可引用 <map> 中的 id 或 name 属性(取决于浏览器),所以我们应同时向 <map> 添加 id 和 name 属性

【注释】:如果某个 area 标签中的坐标和其他区域发生了重叠,会优先采用最先出现的 area 标签。浏览器会忽略超过图像边界范围之外的坐标。

 

 

【实际应用】HTML 图像地图

(1)什么是图像地图?

       把一幅图像分成多个区域,每个区域指向不同的URL地址。例如,将一幅中国地图的图像按照省市划分为若干个区域,这些区域就被称为热点,单击热点区域,就可以连接到与相应的省市有关的页面,这就是图像地图。

(2)怎么制作?

       首先必须定义出图像上的各个热点区域的形状,位置坐标,及其指向的URL地址等信息,这个过程叫图像热点映射。图像热点映射需要使用<map name=mapname></map>标签对进行说明,其中的name属性为该图像热点映射指定了一个名称。

       图像热点映射中的各个区域用<area>标签说明,<area>标签的格式为:<area shape="形状" coords="坐标" href="URL">,href部分也可以用nohref替换,表示在该区域单击鼠标无效。<area>标签还可以有一个target属性,用来指明浏览器在哪个窗口或者帧中显示href属性所指向的网页资源。

       定义好了图像热点之后,接着就要在<img> 图像标签中增加一个名为usemap的属性设置,usemap属性指定该图像被用作图像地图,其设置值为所使用的图像热点映射名称,格式为:在<map>标签中的name属性设置值前多加一个"#"字符。例如,<img src="china.jpg" usemap="#mymap">

 

具体来说:

①将想要显示的图片,使用HTML标签将其显示在页面中,代码很简单,不做过多解释。但是这里有一个关键的并不常用的属性,那就是usemap,它指定了你要选择的地图,也就是使用哪种地图方式来展示里面的链接。示例代码如下:
<img src="planets.jpg" border="0" usemap="#imgMap" alt="Planets" />
 ②接下来,定义Map地图,并将Map分块,用以区分不同的内容区域。
     Map地图由<map>标签和<area>标签组成。<map>标签的定义非常简单,只需声明id和name即可,因为不同浏览器识别的标签不一样,所以id和name二者缺一不可。<area>标签因为不常用,下面的图表展示了各个属性所代表的的确切含义。

 

属性
描述
coords
坐标值
定义可点击区域(对鼠标敏感的区域)的坐标。
href
URL
定义此区域的目标 URL。
shape
default
rect
circ
poly
定义区域的形状。
target
_blank
_parent
_self
_top
规定在何处打开 href 属性指定的目标 URL。
 
到此为止,我们就可以轻松创建自己的图片地图了。然而,对于如何图片中某个元素的坐标对很多小伙伴来说,仍然是一个难题,因为普通的看图软件根本无法查看每个元素的坐标位置。
 
【确定coords坐标值方法】:
方法一:在Dreamweaver中在图片上添加热区自动生成坐标,这是最快的方法
方法二:把需要添加局部连接的图片放在Photoshop中打开标尺然后放大之后可以看到坐标像素
 
 
 
二、图片自适应浏览器宽度问题
由于页面就是一张图片,所以会出现屏幕宽度不同(浏览器宽度不同)造成的显示不全或横向滚动条问题,比如1920px宽的图显示在1366px宽的浏览器上,就会出现横向滚动条。
 
尝试了几种方案:【正确方法在后面文章http://570109268.iteye.com/admin/blogs/2406185做了总结
 
1、将效果图改成div的背景图,对背景图居中显示
<div style="background:url(/images/abc/1.jpg) top center no-repeat;">
 虽然达到了适应浏览器宽度的效果,但area标签不支持图片是背景图,所以点击事件失效!
 
2、将图片按浏览器当前宽度指定宽度大小
<script type="text/javascript">
   window.onload=function(){
      if (window.innerWidth){
         winWidth = window.innerWidth;
      }else if ((document.body) && (document.body.clientWidth)){
        winWidth = document.body.clientWidth;
       }
      if (document.documentElement && 
           document.documentElement.clientWidth){
            winWidth = document.documentElement.clientWidth; 
       } 
        $("#img1").css("width",winWidth);
    } 
</script>
 这种情况虽然也能达到效果,但area的坐标值位置都发生改变,点击区域不对了!

 

3、将图片外层div左侧距离固定,求浏览器宽度winWidth同2

var left = (winWidth-1920)/2;//假设图片宽度是1920
$("#div1").css("left",left);
$("#div1").css("position",absolute);

 将左侧多出部分切掉,同时,去掉右侧多出部分(隐藏横向滚动条)

html{
overflow-x:hidden;
  overflow-y:auto;
}

  此方法缺点,如果浏览器不是全屏显示,右侧部分的图片会被切掉,而且没有滚动条,这就是不会切图的程序员写静态页的偷懒方法。所以想省事还是要最好精通PS

 

.

分享到:
评论

相关推荐

    较全的html标签

    - **标签**: `&lt;h1&gt;`, `&lt;h2&gt;`, `&lt;h3&gt;`, `&lt;h4&gt;`, `&lt;h5&gt;`, `&lt;h6&gt;` - **描述**: 定义不同级别的标题,其中`&lt;h1&gt;`为最大字号,`&lt;h6&gt;`为最小字号。 - **示例**: `一级标题&lt;/h1&gt;` 2. **字体变化**: - **标签**: `...

    前端学科面试宝典面试题下载完整题目答案

    - 使用 `map` 和 `area` 标签绘制图形。 - 使用 `border-radius` 属性绘制圆形或其他形状。 - 使用纯 JavaScript 来计算几何图形的绘制。 #### 三、JavaScript **1. 函数声明与表达式** - **函数声明**:直接声明...

    Spring Cloud 全面学习案例集,含多种功能示例与教程.zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。

    AudioStream 1.5.unitypackage

    AudioStream 1.5.unitypackage

    驾驭未来:Simulink中PMSM永磁同步电机控制深度解析

    在现代工业自动化和电动汽车领域,永磁同步电机(PMSM)因其高效率、高性能和紧凑设计而备受青睐。本文将详细介绍如何在Simulink中实现PMSM的控制,包括矢量控制(FOC)策略的实现,以及必要的代码示例,旨在为工程师和研究者提供实用的指导。 一、PMSM控制概述 永磁同步电机(PMSM)以其高功率密度、高效率和优异的动态响应而广泛应用于工业和汽车领域。在Simulink中实现PMSM控制,通常采用矢量控制(Field-Oriented Control, FOC)策略,该策略通过磁场定向控制实现电机转矩和速度的精确控制。 二、PMSM数学模型与Simulink实现 PMSM的数学模型包括电压方程、磁链方程和转矩方程。在Simulink中,我们可以通过构建相应的模块来实现这些方程。 1. PMSM数学模型 电压方程: u d = R s i d − ω e L q i q + L d d i d d t + ω e ψ f u d ​ =Rsid−ω e ​ L q ​ iq+

    Jupyter_B 站直播事件 webhook 和开播邮件提醒.zip

    Jupyter-Notebook

    合成控制法与收敛性分析资料最新集.zip

    合成控制法与收敛性分析资料最新集.zip

    Gartner发布将漏洞管理发展为暴露管理指南:模拟实时攻击场景的对抗性暴露验证将替代传统渗透测试.pdf

    Gartner发布将漏洞管理发展为暴露管理指南:模拟实时攻击场景的对抗性暴露验证将替代传统渗透测试.pdf

    python+翻译器+语音

    装库 pip install python-office

    Jupyter_python 說明.zip

    Jupyter-Notebook

    《中国房地产统计年鉴》面板数据资源-精心整理.zip

    《中国房地产统计年鉴》面板数据资源-精心整理.zip

    基于python的大麦网自动抢票工具的设计与实现(1) - 副本.zip

    【基于Python的大麦网自动抢票工具的设计与实现】 随着互联网技术的发展,网络购票已经成为人们生活中不可或缺的一部分。尤其是在文化娱乐领域,如音乐会、演唱会、戏剧等活动中,热门演出的门票往往在开售后瞬间就被抢购一空。为了解决这个问题,本论文探讨了一种基于Python的自动抢票工具的设计与实现,旨在提高购票的成功率,减轻用户手动抢票的压力。 Python作为一种高级编程语言,因其简洁明了的语法和丰富的第三方库,成为了开发自动化工具的理想选择。Python的特性使得开发过程高效且易于维护。本论文深入介绍了Python语言的基础知识,包括数据类型、控制结构、函数以及模块化编程思想,这些都是构建抢票工具的基础。 自动化工具在现代社会中广泛应用,尤其在网络爬虫、自动化测试等领域。在抢票工具的设计中,主要利用了自动化工具的模拟用户行为、数据解析和定时任务等功能。本论文详细阐述了如何使用Python中的Selenium库来模拟浏览器操作,通过识别网页元素、触发事件,实现对大麦网购票流程的自动化控制。同时,还讨论了BeautifulSoup和requests库在抓取和解析网页数据中的应用。 大麦网作为国内知名的票务平台,其网站结构和购票流程对于抢票工具的实现至关重要。论文中介绍了大麦网的基本情况,包括其业务模式、用户界面特点以及购票流程,为工具的设计提供了实际背景。 在系统需求分析部分,功能需求主要集中在自动登录、监控余票、自动下单和异常处理等方面。抢票工具需要能够自动填充用户信息,实时监控目标演出的票务状态,并在有票时立即下单。此外,为了应对可能出现的网络延迟或服务器错误,工具还需要具备一定的错误恢复能力。性能需求则关注工具的响应速度和稳定性,要求在大量用户同时使用时仍能保持高效运行。 在系统设计阶段,论文详细描述了整体架构,包括前端用户界面、后端逻辑处理以及与大麦网交互的部分。在实现过程中,采用了多线程技术以提高并发性,确保在抢票关键环节的快速响应。此外,还引入了异常处理机制,以应对网络故障或程序错误。 测试与优化是确保抢票工具质量的关键步骤。论文中提到了不同场景下的测试策略,如压力测试、功能测试和性能测试,以验证工具的有效性和稳定性。同时,通过对抢票算法的不断优化,提高工具的成功率。 论文讨论了该工具可能带来的社会影响,包括对消费者体验的改善、对黄牛现象的抑制以及可能引发的公平性问题。此外,还提出了未来的研究方向,如增加多平台支持、优化抢票策略以及考虑云服务的集成,以进一步提升抢票工具的实用性。 本论文全面介绍了基于Python的大麦网自动抢票工具的设计与实现,从理论到实践,从需求分析到系统优化,为读者提供了一个完整的开发案例,对于学习Python编程、自动化工具设计以及理解网络购票市场的运作具有重要的参考价值。

    学生考勤管理系统 SSM毕业设计 附带论文.zip

    学生考勤管理系统 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B

    ODrive FOC BLDC伺服控制方案,KEIL版本

    ODrive FOC BLDC伺服控制方案,KEIL版本

    数字经济资源大合集(7类)-最新.zip

    数字经济资源大合集(7类)-最新.zip

    1950-2021年中国统计年鉴(分省年度)面板数据-全新发布.zip

    1950-2021年中国统计年鉴(分省年度)面板数据-全新发布.zip

    伯克利大学机器学习-5Dimensionality reduction [Percy Liang]

    lstm Summary Framework: z = U>x, x u Uz Criteria for choosing U: • PCA: maximize projected variance • CCA: maximize projected correlation • FDA: maximize projected intraclass variance

    我国《县域统计年鉴-人口教育医疗》面板数据-已更至最新.zip

    我国《县域统计年鉴-人口教育医疗》面板数据-已更至最新.zip

    分省数字经济发展指标数据集-最新.zip

    分省数字经济发展指标数据集-最新.zip

    Spring Boot 从入门到精通教程:含多方面知识及实战项目.zip

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。

Global site tag (gtag.js) - Google Analytics