在HTML中,可以在Img标签中使用Map,可以设置图像热区(可点击区域),但是在不同的分辨率上表现不一致。记录一下获取coords锚点和适配不同分辨率的方法。
在HTML,在<img>
中使用<map>
时,设置<area>
的coords,需要找到锚点,获取方式如下:
获取锚点
引入JQuery(如果项目中未使用JQuery,可以只在获取锚点时引用,获取锚点后移除引用),在<script>
中设置如下代码:
1
2
3
4
5
6
|
function deal(e){
console.log(e.offsetX+":"+e.offsetY);
}
$("#img9").mousemove(function(e) { // img9 需要改为你的img id
deal(e);
});
|
设置好后,用浏览器打开HTML,打开开发者控制台,在图片上移动鼠标会在console打印锚点位置。(此时请记录当前获取锚点时页面的width,锚点自适应分辨率时需要用到此宽度)。
设置自适应锚点(重计算锚点,图像热区)
自适应锚点代码(Native JS代码)如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
window.onload = function () {
var ImageMap = function (map) {
var n,
areas = map.getElementsByTagName('area'),
len = areas.length,
coords = [],
previousWidth = [获取锚点时的页面宽度]; // 即你当时是以什么样的宽度来获取锚点的
for (n = 0; n < len; n++) {
coords[n] = areas[n].coords.split(',');
}
this.resize = function () {
var n, m, clen,
x = document.body.clientWidth / previousWidth;
for (n = 0; n < len; n++) {
clen = coords[n].length;
for (m = 0; m < clen; m++) {
coords[n][m] *= x;
}
areas[n].coords = coords[n].join(',');
}
previousWidth = document.body.clientWidth;
return true;
};
window.onresize = this.resize;
};
var imageMap = new ImageMap(document.getElementById('[map id]'));
imageMap.resize();
}
|