Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
132
rated 0 times [  138] [ 6]  / answers: 1 / hits: 99861  / 12 Years ago, sat, november 10, 2012, 12:00:00

I'm currently trying to make an Image-Map on my site that will resize depending on the size of the window... I was wondering if there was anyway to do this with HTML or will I have to do this with Javascript or another language.



<div style=text-align:center; width:1920px; margin-left:auto; margin-right:auto;>
<img id=Image-Maps_5201211070133251 src=Site.png usemap=#Image-Maps_5201211070133251 border=0 width=1920 height=1080 alt= />
<map id=_Image-Maps_5201211070133251 name=Image-Maps_5201211070133251>
<area shape=poly coords=737,116,1149,118,944,473, href=http://essper.bandcamp.com alt=Bandcamp title=Bandcamp />
<area shape=poly coords=1006,589,1418,590,1211,945, href=http://soundcloud.com/essper alt=Soundcloud title=Soundcloud />
<area shape=poly coords=502,590,910,591,708,944, href=http://facebook.com/the.essper alt=Facebook title=Facebook />
</map>



More From » html

 Answers
38

If you end up to do the task with JavaScript, here is a cross-browser codesnippet to resize all areas in MAP element.



window.onload = function () {
var ImageMap = function (map) {
var n,
areas = map.getElementsByTagName('area'),
len = areas.length,
coords = [],
previousWidth = 1920;
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;
},
imageMap = new ImageMap(document.getElementById('map_ID'));
imageMap.resize();
}


previousWidth must be equal to the width of the original image. You also need to use some relative units in HTML:



<div style=width:100%;>
<img id=Image-Maps_5201211070133251 src=Site.png usemap=#Image-Maps_5201211070133251 border=0 width=100% alt= />


Working demo at jsFiddle. If you open the fiddle in IE, you can actually see AREAs when clicking them.


[#82068] Thursday, November 8, 2012, 12 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
loganl

Total Points: 424
Total Questions: 86
Total Answers: 112

Location: Zimbabwe
Member since Thu, Jul 21, 2022
2 Years ago
;