记录使用HTML <map> 标签

需求 :图片设置自定义好的自定义菜单 ,在指定区域添加跳转

1
2
3
4
5
<img src="A.png" alt="" usemap="#Map" id="imga" class="imgStyle" />
       <map id="CribMap" name="Map">
           <area shape="rect" coords="186,31,413,90" href="#库存明细表">
           <area shape="rect" coords="487,31,725,90" href="#销货出库明细表">
       </map>

 coords=x1,y1,x2,y2,  x1y1左上,x2,y2 右下

 图片高度自适应窗体大小,这个时候的area的coords的位置因为图片的大小发生了改变,指向的就不是原来位置的区块,需要js更改coords的坐标来也随页面等比例的变化

 

 

 

复制代码
<script type="text/javascript">
      
        window.onload = function () { reloadPage(); }
        //自动刷新一次页面
        function reloadPage() {
            if (location.href.indexOf('#reloaded') == -1) { //判断是否有刷新标记
                location.href = location.href + "#reloaded";//没有添加标记
                location.reload();//刷新
            }
        }

        adjust();
        var aa = document.body.clientHeight;
       
        var timeout = null;// 
        window.onresize = function () {
            clearTimeout(timeout);
            timeout = setTimeout(function () { window.location.reload(); }, 100);//页面大小变化,重新加载页面以刷新MAP
        }
    
        //获取MAP中元素属性
        function adjust() {
//获取map
var map = document.getElementById("CribMap");var element = map.childNodes; for (var i = 0; i < element.length; i++) { console.log("element[i].nodeName", element[i].nodeName)
///只需要更改AREA的值
if (element[i].nodeName.toString() == "AREA") { var oldCoords = element[i].coords; var newcoords = adjustPosition(oldCoords); element[i].setAttribute("coords", newcoords); } } var test = element; } //调整MAP中坐标 function adjustPosition(position) { var imga = document.getElementById("imga"); var pageWidth = imga.clientWidth;//获取图片控件宽度 var pageHeith = imga.clientHeight;//获取图片控件宽度 console.log("pageWidth", pageWidth)//为0 console.log("pageHeith", pageHeith) var imageWidth = 873; //这个是你最开始设置坐标的图片的长宽,原始长宽 var imageHeigth = 980;
//如果获取到的宽度是0,需要计算得到宽度
if (pageWidth == 0) {
pageWidth
= pageHeith / imageHeigth * imageWidth } console.log("pageWidth", pageWidth) //获取所有坐标 var each = position.split(","); //重新按照缩放扩大比例计算新的坐标 for (var i = 0; i < each.length; i++) { each[i] = Math.round(parseInt(each[i]) * pageWidth / imageWidth).toString();//x坐标 i++; each[i] = Math.round(parseInt(each[i]) * pageHeith / imageHeigth).toString();//y坐标 } //生成新的坐标点 var newPosition = ""; for (var i = 0; i < each.length; i++) { newPosition += each[i]; if (i < each.length - 1) { newPosition += ","; } } console.log("newPosition", newPosition)//获取的新的坐标 return newPosition; } </script>
复制代码

 

 

 结束,大功告成

posted @   魔法少女郭德纲啊  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
点击右上角即可分享
微信分享提示