如何在HTML区域标签上应用悬停?

如何在HTML区域标签上应用悬停?,第1张

如何在HTML区域标签上应用悬停

我要做的是创建一个canvas元素,然后将其放置在图像映射的前面。然后,每当鼠标悬停在某个区域上时,我都会调用一个函数,该函数获取该形状和shape-
type的坐标字符串。如果是多边形,则使用坐标在画布上绘制轮廓。如果是矩形,我要画一个矩形轮廓。您可以轻松添加代码来处理圈子。

You could also set the opacity of the canvas to less than 100% before filling
the poly/rect/circle. You could also change the reliance on a global for the
canvas’s context - this would mean you could deal with more than 1 image-map
on the same page.

<!DOCTYPE html><html><head><script>// stores the device context of the canvas we use to draw the outlines// initialized in myInit, used in myHover and myLeavevar hdc;// shorthand funcfunction byId(e){return document.getElementById(e);}// takes a string that contains coords eg - "227,307,261,309, 339,354, 328,371, 240,331"// draws a line from each co-ord pair to the next - assumes starting point needs to be repeated as ending point.function drawPoly(coOrdStr){    var mCoords = coOrdStr.split(',');    var i, n;    n = mCoords.length;    hdc.beginPath();    hdc.moveTo(mCoords[0], mCoords[1]);    for (i=2; i<n; i+=2)    {        hdc.lineTo(mCoords[i], mCoords[i+1]);    }    hdc.lineTo(mCoords[0], mCoords[1]);    hdc.stroke();}function drawRect(coOrdStr){    var mCoords = coOrdStr.split(',');    var top, left, bot, right;    left = mCoords[0];    top = mCoords[1];    right = mCoords[2];    bot = mCoords[3];    hdc.strokeRect(left,top,right-left,bot-top); }function myHover(element){    var hoveredElement = element;    var coordStr = element.getAttribute('coords');    var areaType = element.getAttribute('shape');    switch (areaType)    {        case 'polygon':        case 'poly': drawPoly(coordStr); break;        case 'rect': drawRect(coordStr);    }}function myLeave(){    var canvas = byId('myCanvas');    hdc.clearRect(0, 0, canvas.width, canvas.height);}function myInit(){    // get the target image    var img = byId('img-imgmap201293016112');    var x,y, w,h;    // get it's position and width+height    x = img.offsetLeft;    y = img.offsetTop;    w = img.clientWidth;    h = img.clientHeight;    // move the canvas, so it's contained by the same parent as the image    var imgParent = img.parentNode;    var can = byId('myCanvas');    imgParent.appendChild(can);    // place the canvas in front of the image    can.style.zIndex = 1;    // position it over the image    can.style.left = x+'px';    can.style.top = y+'px';    // make same size as the image    can.setAttribute('width', w+'px');    can.setAttribute('height', h+'px');    // get it's context    hdc = can.getContext('2d');    // set the 'default' values for the colour/width of fill/stroke operations    hdc.fillStyle = 'red';    hdc.strokeStyle = 'red';    hdc.lineWidth = 2;}</script><style>body{    background-color: gray;}canvas{    pointer-events: none;           position: absolute;}</style><title></title></head><body onload='myInit()'>    <canvas id='myCanvas'></canvas>     <!-- gets re-positioned in myInit(); --><center><img src='http://dailyaeen.com.pk/epaper/wp-content/uploads/2012/09/27+Sep+2012-1.jpg?1349003469874' usemap='#imgmap_css_container_imgmap201293016112'  title='imgmap201293016112' alt='imgmap201293016112' id='img-imgmap201293016112' /><map id='imgmap201293016112' name='imgmap_css_container_imgmap201293016112'>    <area shape="poly" onmouseover='myHover(this);' onmouseout='myLeave();' coords="2,0,604,-3,611,-3,611,166,346,165,345,130,-2,130,-2,124,1,128,1,126" href="" alt="imgmap201293016112-0" title="imgmap201293016112-0"  id="imgmap201293016112-area-0" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="1,131,341,213" href="" alt="imgmap201293016112-1" title="imgmap201293016112-1"  id="imgmap201293016112-area-1" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="346,166,614,241" href="" alt="imgmap201293016112-2" title="imgmap201293016112-2"  id="imgmap201293016112-area-2" />    <area shape="poly" onmouseover='myHover(this);' onmouseout='myLeave();' coords="917,242,344,239,345,496,574,495,575,435,917,433" href="" alt="imgmap201293016112-3" title="imgmap201293016112-3"  id="imgmap201293016112-area-3" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="1,416,341,494" href="" alt="imgmap201293016112-4" title="imgmap201293016112-4"  id="imgmap201293016112-area-4" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="1,215,341,410" href="" alt="imgmap201293016112-5" title="imgmap201293016112-5"  id="imgmap201293016112-area-5" />    <area shape="poly" onmouseover='myHover(this);' onmouseout='myLeave();' coords="916,533,916,436,578,436,576,495,806,496,807,535" href="" alt="imgmap201293016112-6" title="imgmap201293016112-6"  id="imgmap201293016112-area-6" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="805,536,918,614" href="" alt="imgmap201293016112-7" title="imgmap201293016112-7"  id="imgmap201293016112-area-7" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="461,494,803,616" href="" alt="imgmap201293016112-8" title="imgmap201293016112-8"  id="imgmap201293016112-area-8" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="0,497,223,616" href="" alt="imgmap201293016112-9" title="imgmap201293016112-9"  id="imgmap201293016112-area-9" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="230,494,456,614" href="" alt="imgmap201293016112-10" title="imgmap201293016112-10"  id="imgmap201293016112-area-10" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="345,935,572,1082" href="" alt="imgmap201293016112-11" title="imgmap201293016112-11"  id="imgmap201293016112-area-11" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="1,617,457,760" href="" alt="imgmap201293016112-12" title="imgmap201293016112-12"  id="imgmap201293016112-area-12" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="345,760,577,847" href="" alt="imgmap201293016112-13" title="imgmap201293016112-13"  id="imgmap201293016112-area-13" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="0,759,344,906" href="" alt="imgmap201293016112-14" title="imgmap201293016112-14"  id="imgmap201293016112-area-14" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="346,850,571,935" href="" alt="imgmap201293016112-15" title="imgmap201293016112-15"  id="imgmap201293016112-area-15" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="578,761,915,865" href="" alt="imgmap201293016112-16" title="imgmap201293016112-16"  id="imgmap201293016112-area-16" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="0,1017,226,1085" href="" alt="imgmap201293016112-17" title="imgmap201293016112-17"  id="imgmap201293016112-area-17" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="0,908,342,1017" href="" alt="imgmap201293016112-18" title="imgmap201293016112-18"  id="imgmap201293016112-area-18" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="229,1010,342,1084" href="" alt="imgmap201293016112-19" title="imgmap201293016112-19"  id="imgmap201293016112-area-19" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="0,1086,340,1206" href="" alt="imgmap201293016112-20" title="imgmap201293016112-20"  id="imgmap201293016112-area-20" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="0,1209,224,1290" href="" alt="imgmap201293016112-21" title="imgmap201293016112-21"  id="imgmap201293016112-area-21" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="0,1290,225,1432" href="" alt="imgmap201293016112-22" title="imgmap201293016112-22"  id="imgmap201293016112-area-22" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="0,1432,340,1517" href="" alt="imgmap201293016112-23" title="imgmap201293016112-23"  id="imgmap201293016112-area-23" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="346,1432,686,1517" href="" alt="imgmap201293016112-24" title="imgmap201293016112-24"  id="imgmap201293016112-area-24" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="461,1266,686,1429" href="" alt="imgmap201293016112-25" title="imgmap201293016112-25"  id="imgmap201293016112-area-25" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="230,1365,455,1430" href="" alt="imgmap201293016112-26" title="imgmap201293016112-26"  id="imgmap201293016112-area-26" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="231,1291,457,1360" href="" alt="imgmap201293016112-27" title="imgmap201293016112-27"  id="imgmap201293016112-area-27" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="230,1210,342,1289" href="" alt="imgmap201293016112-28" title="imgmap201293016112-28"  id="imgmap201293016112-area-28" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="692,928,916,1016" href="" alt="imgmap201293016112-29" title="imgmap201293016112-29"  id="imgmap201293016112-area-29" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="460,616,916,759" href="" alt="imgmap201293016112-30" title="imgmap201293016112-30"  id="imgmap201293016112-area-30" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="693,1316,917,1518" href="" alt="imgmap201293016112-31" title="imgmap201293016112-31"  id="imgmap201293016112-area-31" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="344,1150,572,1219" href="" alt="imgmap201293016112-32" title="imgmap201293016112-32"  id="imgmap201293016112-area-32" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="693,1015,916,1171" href="" alt="imgmap201293016112-33" title="imgmap201293016112-33"  id="imgmap201293016112-area-33" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="577,955,686,1032" href="" alt="imgmap201293016112-34" title="imgmap201293016112-34"  id="imgmap201293016112-area-34" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="577,1036,687,1101" href="" alt="imgmap201293016112-35" title="imgmap201293016112-35"  id="imgmap201293016112-area-35" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="576,1104,689,1172" href="" alt="imgmap201293016112-36" title="imgmap201293016112-36"  id="imgmap201293016112-area-36" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="691,1232,918,1313" href="" alt="imgmap201293016112-37" title="imgmap201293016112-37"  id="imgmap201293016112-area-37" />    <area shape="rect" onmouseover='myHover(this);' onmouseout='myLeave();' coords="341,1085,573,1151" href="" alt="imgmap201293016112-38" title="imgmap201293016112-38"  id="imgmap201293016112-area-38" />    <area shape="poly" onmouseover='myHover(this);' onmouseout='myLeave();' coords="917,868,917,925,688,927,688,955,576,955,574,867,572,864" href="" alt="imgmap201293016112-39" title="imgmap201293016112-39"  id="imgmap201293016112-area-39" />    <area shape="poly" onmouseover='myHover(this);' onmouseout='myLeave();' coords="919,1173,917,1231,688,1231,688,1266,574,1267,576,1175,576,1175" href="" alt="imgmap201293016112-40" title="imgmap201293016112-40"  id="imgmap201293016112-area-40" />    <area shape="poly" onmouseover='myHover(this);' onmouseout='myLeave();' coords="572,1222,572,1265,459,1265,458,1289,339,1290,344,1225" href="" alt="imgmap201293016112-41" title="imgmap201293016112-41"  id="imgmap201293016112-area-41" /></map></center></body></html>


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5566783.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-14
下一篇2022-12-14

发表评论

登录后才能评论

评论列表(0条)

    保存