HTML图片热区map area的用法

map标签

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

  • area元素永远嵌套在map元素内部。area元素可定义图像映射中的区域。
  • img标签中的usemap属性可引用的map标签中的idname属性(取决于浏览器),所以我们应同时向map标签添加idname属性。

注释:<img>  标签中的 usemap 属性与 map 元素 name 属性相关联,创建图像与映射之间的联系。 

 示例

我们想在下面一张图实现九个热点区域,不切图,就使用map标签。

 用ps工具得到以下坐标

步骤: 

  1. 首先必须定义出图像上的各个热点区域的形状,位置坐标,及其指向的URL地址等信息,这个过程叫图像热点映射。图像热点映射需要使用<map name=mapname></map>标签对进行说明,其中的name属性为该图像热点映射指定了一个名称。
  2. 图像热点映射中的各个区域用<area>标签说明,<area>标签的格式为:<area shape="形状" coords="坐标" href="URL">,href部分也可以用nohref替换,表示在该区域单击鼠标无效。<area>标签还可以有一个target属性,用来指明浏览器在哪个窗口或者帧中显示href属性所指向的网页资源。
  3. 定义好了图像热点之后,接着就要在<img> 图像标签中增加一个名为usemap的属性设置,usemap属性指定该图像被用作图像地图,其设置值为所使用的图像热点映射名称,格式为:在<map>标签中的name属性设置值前多加一个"#"字符。例如,<img src="china.jpg" usemap="#mymap">

 代码实现:

 <img src='../../assets/images/animal.jpg' style="width:100%;" usemap="#animalmap">
 <map name="animalmap">
    <area shape="rect" coords="0,0,90,90" href="http://www.baidu.com" target="_blank" alt="老鼠">
    <area shape="rect" coords="90,90,180,0" href="http://www.sina.com" target="_blank" alt="牛">
    <area shape="rect" coords="180,0,270,90" href="http://www.163.com" target="_blank" alt="虎">
    <area shape="rect" coords="270,90,360,0" href="http://www.qq.com" target="_blank" alt="兔">
</map>

Shape属性的设置说明:

Rect:

       定义一个矩形区域,coords属性设置值为左上角、右下角的坐标,各个坐标之间用逗号分开。

Poly:

       定义一个多边型区域,coords属性设置值为多边形各个顶点的坐标值。

Circle:

       定义一个圆形区域,coords属性设置值为圆心坐标及半径,前两个参数分别为圆心的横、纵坐标,第三个参数为半径。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现HTML热区map坐标随图片大小自适应,可以通过以下步骤: 1. 在HTML中,为图片设置一个容器div,并将图片作为div的背景图。设置该div的宽度和高度,以及background-size为contain或cover,使图片大小自适应容器。 2. 使用JavaScript获取图片的实际宽度和高度,计算出图片缩放比例。 3. 遍历所有热区的坐标,将坐标乘以缩放比例,以适应图片缩放后的大小。 以下是示例代码: HTML部分: ```html <div id="image-container"> <img src="image.jpg" alt="" id="image" /> <map name="hotspots"> <area shape="rect" coords="10,10,50,50" href="#" /> <area shape="rect" coords="60,60,100,100" href="#" /> </map> </div> ``` JavaScript部分: ```javascript const container = document.getElementById('image-container'); const image = document.getElementById('image'); const map = document.getElementsByName('hotspots')[0]; // 获取图片实际尺寸 const imgWidth = image.naturalWidth; const imgHeight = image.naturalHeight; // 计算缩放比例 const scaleX = container.offsetWidth / imgWidth; const scaleY = container.offsetHeight / imgHeight; const scale = Math.min(scaleX, scaleY); // 遍历所有热区坐标,乘以缩放比例 const coords = map.getElementsByTagName('area'); for (let i = 0; i < coords.length; i++) { const coord = coords[i].getAttribute('coords').split(','); for (let j = 0; j < coord.length; j++) { coord[j] = Math.round(coord[j] * scale); } coords[i].setAttribute('coords', coord.join(',')); } ``` 以上代码会根据图片实际大小和容器大小计算出缩放比例,然后遍历所有热区坐标,将坐标乘以缩放比例调整大小。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黎轩栀海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值