HTML熱區map座標,隨窗口大小自適應辦法(javascript)

爲圖片添加MAP:
[html] view plaincopy
  1. <div>  
  2. <span id="lbresult">  
  3. <img src='YardCribGraphic.aspx' width='100%' heigh='100%' usemap='#b0a1a239cbf34d64acf4d6798dd67da0' border='0'/>  
  4. <map id="CribMap" name="b0a1a239cbf34d64acf4d6798dd67da0">  
  5.    <area shape="poly" id="41" coords="244,90,244,210,322,210,295,150,322,90" href="#" title="垛位名:南2垛位"  
  6. />  
  7.    <area shape="poly" id="43" coords="350,90,350,210,433,210,461,150,405,90" href="#" title="垛位名:垛位3"  
  8. />  
  9.    <area shape="poly" id="42" coords="241,240,241,360,309,360,322,300,295,240" href="#" title="垛位名:北垛位2"  
  10.  />  
  11.    <area shape="poly" id="44" coords="240,390,240,510,364,510,350,450,336,390" href="#" title="垛位名:三堆場001"  
  12.  />  
  13. </map></span>  
  14. </div>  


圖片大小隨頁面變化,需要MAP中每個area的座標也隨頁面等比例變化。

Javascript實現:

[javascript] view plaincopy
  1. <script type="text/javascript">  
  2.   
  3.         adjust();  
  4.   
  5.         var timeout = null;//onresize觸發次數過多,設置定時器  
  6.         window.onresize = function () {  
  7.             clearTimeout(timeout);  
  8.             timeout = setTimeout(function () { window.location.reload(); }, 100);//頁面大小變化,重新加載頁面以刷新MAP  
  9.         }  
  10.   
  11.         //獲取MAP中元素屬性  
  12.         function adjust() {  
  13.             var map = document.getElementById("CribMap");  
  14.             var element = map.childNodes;  
  15.             var itemNumber = element.length / 2;  
  16.             for (var i = 0; i < itemNumber - 1; i++) {  
  17.                 var item = 2 * i + 1;  
  18.                 var oldCoords = element[item].coords;  
  19.                 var newcoords = adjustPosition(oldCoords);  
  20.                 element[item].setAttribute("coords", newcoords);  
  21.             }  
  22.             var test = element;  
  23.         }  
  24.   
  25.         //調整MAP中座標  
  26.         function adjustPosition(position) {  
  27.             var pageWidth = document.body.clientWidth;//獲取頁面寬度  
  28.             var pageHeith = document.body.clientHeight;//獲取頁面高度  
  29.   
  30.             var imageWidth = 1160;<span style="white-space:pre">    </span>//圖片的長寬  
  31.             var imageHeigth = 990;  
  32.   
  33.             var each = position.split(",");  
  34.             //獲取每個座標點  
  35.             for (var i = 0; i < each.length; i++) {  
  36.                 each[i] = Math.round(parseInt(each[i]) * pageWidth / imageWidth).toString();//x座標  
  37.                 i++;  
  38.                 each[i] = Math.round(parseInt(each[i]) * pageHeith / imageHeigth).toString();//y座標  
  39.             }  
  40.             //生成新的座標點  
  41.             var newPosition = "";  
  42.             for (var i = 0; i < each.length; i++) {  
  43.                 newPosition += each[i];  
  44.                 if (i < each.length - 1) {  
  45.                     newPosition += ",";  
  46.                 }  
  47.             }  
  48.             return newPosition;  
  49.         }  
  50. </script>  
感謝原文作者:http://blog.csdn.net/crystalwood/article/details/13533401
發佈了74 篇原創文章 · 獲贊 43 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章