核心提示:在上一节图片映射那么拽中,我们讲了图片映射的使用方法,然而很多小伙伴们抱怨图片不能根据页面的窗口调整而自适应,图片地图成了摆设,今天给大家分享一个插件,有了它,小伙伴们再也不用担心图片地图走错门了。话...
在上一节图片映射那么拽中,我们讲了图片映射的使用方法,然而很多小伙伴们抱怨图片不能根据页面的窗口调整而自适应,图片地图成了摆设,今天给大家分享一个插件,有了它,小伙伴们再也不用担心图片地图走错门了。话不多说,直接上源码:
示例HTML文件:
使用的JS插件:
显示的效果图:

示例HTML文件:
热区图片拖拽 <script src="map.js" type="text/javascript"></script> <script type="text/javascript"> Number.prototype.NaN0=function(){return isNaN(this)?0:this;} var bDrag=false, mouseOffset=null; function getMouseOffset(o,e){ var _oPos=getPosition(o), _mPos=mouseCoords(e); return {x:_mPos.x-_oPos.x,y:_mPos.y-_oPos.y}; } function getPosition(o){ var left=0, top=0; while(o.offsetParent){ left+=o.offsetLeft+(o.currentStyle?(o.currentStyle.borderLeftWidth*1).NaN0():0); top +=o.offsetTop +(o.currentStyle?(o.currentStyle.borderTopWidth*1).NaN0():0); o=o.offsetParent; } left+=o.offsetLeft+(o.currentStyle?(o.currentStyle.borderLeftWidth*1).NaN0():0); top+=o.offsetTop+(o.currentStyle?(o.currentStyle.borderTopWidth*1).NaN0():0); return {x:left,y:top}; } function mouseCoords(e){ if(e.pageX||e.pageY){ return {x:e.pageX,y:e.pageY}; } return {x:e.clientX+document.body.scrollLeft-document.body.clientLeft,y:e.clientY+document.body.scrollTop-document.body.clientTop}; } onload=function(){ var oDrag=document.getElementById('aaa'); if(!oDrag) return; oDrag.onmousedown=function(e){ bDrag=true; e=e||window.event; mouseOffset=getMouseOffset(this,e); return false; } oDrag.onmousemove=function(e){ if(!bDrag)return; e=e||window.event; var _mPos = mouseCoords(e); oDrag.style.left=(_mPos.x - mouseOffset.x)+'px'; oDrag.style.top= (_mPos.y - mouseOffset.y)+'px'; return false; } oDrag.onmouseup=function(){ bDrag = false; mouseOffset=null;} var arm_img=document.getElementById('emergencyImg') cvi_map.add(arm_img,{areacolor: '#FFFF00', bordercolor: '#60F',nofade:'true' }); canvahtml=document.getElementById("emergencyImg_canvas").innerHTML; } /***************************缩放测试**************************************/ //已经成功缩放并且全部调整好,缩放后高亮也出现了。只是方法比较BT,你需要自己到map.js里找更好的方式 function aa(){ var o=document.getElementById('emergencyImg') cvi_map.remove(o); var W1=o.offsetWidth,H1=o.offsetHeight; var windowsWidth = document.documentElement.clientWidth * 0.7; var windowHeight = document.documentElement.clientHeight * 0.7; o.style.width=windowsWidth+'px';o.style.height=windowHeight+'px'; var W2=o.offsetWidth,H2=o.offsetHeight; var rW=W2/W1, rH=H2/H1; var areaLendth = document.getElementsByTagName('area').length; for(var k=0;k
![]()
使用的JS插件:
var canvascheck = document.createElement('canvas');
var isIE = window.navigator.systemLanguage&&(!document.documentMode||document.documentMode<9)?1:0;
var isI8 = isIE&&document.documentMode?1:0;
var isVM = isIE&&document.namespaces?1:0;
var isCV = canvascheck.getContext?1:0;
var isJG = 0, jg = new Array();
var canvahtml;
function showCoords(map,ele,x,y,w,h) {}
function getClassValue(classes,string){
var temp = 0; var pos = string.length;
for (var j=0;j ';
}else if(obj.shape.toLowerCase()=='circle') {
t += ' ';
}else {
for(j=2;j ';
}
} canvas.innerHTML += t;
}else if(isCV) {
if(f<1) {canvas.fading = 0; canvas.style.opacity = 0;}
context = canvas.getContext("2d");
for(a=0;a0 && px==ex) {ex -= ox; }
oy = self.pageYOffset; if(oy>0 && py==ey) {ey -= oy; }
}else if(document.documentElement) {
ox = document.documentElement.scrollLeft;
oy = document.documentElement.scrollTop;
}else if(document.body) {
ox = document.body.scrollLeft; oy = document.body.scrollTop;
}
if(document.body.scrollHeight!=ph||document.body.scrollWidth!=pw) {
var o = document.getElementById(i);
var t = findPosXY(o); x = t.x; y = t.y;
}
cx = Math.min(Math.max(ex+ox-x,0),w);
cy = Math.min(Math.max(ey+oy-y,0),h);
showCoords(n,a,cx,cy,w,h);
}
function findPosXY(ele) {
var t; var d = {x:ele.offsetLeft, y:ele.offsetTop };
if(ele.offsetParent) { t = findPosXY(ele.offsetParent); d.x += t.x; d.y += t.y;}
return d;
}
function roundedRect(ctx,x,y,width,height,radius,nopath){
if (!nopath) ctx.beginPath();
ctx.moveTo(x,y+radius);
ctx.lineTo(x,y+height-radius);
ctx.quadraticCurveTo(x,y+height,x+radius,y+height);
ctx.lineTo(x+width-radius,y+height);
ctx.quadraticCurveTo(x+width,y+height,x+width,y+height-radius);
ctx.lineTo(x+width,y+radius);
ctx.quadraticCurveTo(x+width,y,x+width-radius,y);
ctx.lineTo(x+radius,y);
ctx.quadraticCurveTo(x,y,x,y+radius);
if (!nopath) ctx.closePath();
}
function getRadius(radius,width,height){
var part = (Math.min(width,height)/100);
radius = Math.max(Math.min(100,radius/part),0);
return radius + '%';
}
var cvi_map = {
defaultRadius : 0,
defaultOpacity : 33,
defaultBordercolor : '#0000ff',
defaultAreacolor : '#000000',
defaultNoborder : false,
defaultNofade : false,
defaultShowcoords : false,
defaultImgsrc : '',
defaultMapid : '',
defaultDelayed : false,
add: function(image, options) {
var w=image.offsetWidth;
var h=image.offsetHeight;
var map, mapname = image.useMap.split("#");
if(mapname[1]!=''&&mapname[1].length>=1) {map = document.getElementsByName(mapname[1])[0];}
if(image.tagName.toUpperCase() == "IMG" && map) {
var defopts = { "radius" : cvi_map.defaultRadius, "opacity" : cvi_map.defaultOpacity, "bordercolor" : cvi_map.defaultBordercolor, "areacolor" : cvi_map.defaultAreacolor, "noborder" : cvi_map.defaultNoborder, "nofade" : cvi_map.defaultNofade, "showcoords" : cvi_map.defaultShowcoords, "imgsrc" : cvi_map.defaultImgsrc, "mapid" : cvi_map.defaultMapid, "delayed" : cvi_map.defaultDelayed };
if(options) {
for(var i in defopts) { if(!options[i]) { options[i] = defopts[i]; }}
}else {
options = defopts;
}
var imageWidth = ('iwidth' in options) ? parseInt(options.iwidth) : image.width;
var imageHeight = ('iheight' in options) ? parseInt(options.iheight) : image.height;
try {
var object = image.parentNode;
object.style.position = (object.style.position=='static'||object.style.position==''?'relative':object.style.position);
object.style.height = image.height+'px';
object.style.width = image.width+'px';
object.style.padding = 0+'px';
object.style.MozUserSelect = "none";
object.style.KhtmlUserSelect = "none";
object.unselectable = "on";
var blind, bgrnd, canvas; image.jg = 0;
if(isVM) {
if(document.namespaces['v']==null) {
var e=["shape","shapetype","group","background","path","formulas","handles","fill","stroke","shadow","textbox","textpath","imagedata","line","polyline","curve","roundrect","oval","rect","arc","image"],s=document.createStyleSheet();
for(var i=0; i 显示的效果图:




