HTML坐标不随着屏幕大小改变,HTML热区map坐标,随窗口大小自适应办法(javascript)...

为图片添加MAP:

YardCribGraphic.aspx

/>

/>

/>

/>

图片大小随页面变化,需要MAP中每个area的坐标也随页面等比例变化。

Javascript实现:

adjust();

var timeout = null;//onresize触发次数过多,设置定时器

window.onresize = function () {

clearTimeout(timeout);

timeout = setTimeout(function () { window.location.reload(); }, 100);//页面大小变化,重新加载页面以刷新MAP

}

//获取MAP中元素属性

function adjust() {

var map = document.getElementById("CribMap");

var element = map.childNodes;

var itemNumber = element.length / 2;

for (var i = 0; i < itemNumber - 1; i++) {

var item = 2 * i + 1;

var oldCoords = element[item].coords;

var newcoords = adjustPosition(oldCoords);

element[item].setAttribute("coords", newcoords);

}

var test = element;

}

//调整MAP中坐标

function adjustPosition(position) {

var pageWidth = document.body.clientWidth;//获取页面宽度

var pageHeith = document.body.clientHeight;//获取页面高度

var imageWidth = 1160; //图片的长宽

var imageHeigth = 990;

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 += ",";

}

}

return newPosition;

}

---------------------

作者:CoolBadger

来源:CSDN

原文:https://blog.csdn.net/crystalwood/article/details/13533401

版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现HTML热区map坐标随图片大小自适应,可以通过以下步骤: 1. 在HTML中,为图片设置一个容器div,并将图片作为div的背景图。设置该div的宽度和高度,以及background-size为contain或cover,使图片大小自适应容器。 2. 使用JavaScript获取图片的实际宽度和高度,计算出图片缩放比例。 3. 遍历所有热区坐标,将坐标乘以缩放比例,以适应图片缩放后的大小。 以下是示例代码: HTML部分: ```html <div id="image-container"> <img src="image.jpg" alt="" id="image" /> <map name="hotspots"> <area shape="rect" coords="10,10,50,50" href="#" /> <area shape="rect" coords="60,60,100,100" href="#" /> </map> </div> ``` JavaScript部分: ```javascript const container = document.getElementById('image-container'); const image = document.getElementById('image'); const map = document.getElementsByName('hotspots')[0]; // 获取图片实际尺寸 const imgWidth = image.naturalWidth; const imgHeight = image.naturalHeight; // 计算缩放比例 const scaleX = container.offsetWidth / imgWidth; const scaleY = container.offsetHeight / imgHeight; const scale = Math.min(scaleX, scaleY); // 遍历所有热区坐标,乘以缩放比例 const coords = map.getElementsByTagName('area'); for (let i = 0; i < coords.length; i++) { const coord = coords[i].getAttribute('coords').split(','); for (let j = 0; j < coord.length; j++) { coord[j] = Math.round(coord[j] * scale); } coords[i].setAttribute('coords', coord.join(',')); } ``` 以上代码会根据图片实际大小和容器大小计算出缩放比例,然后遍历所有热区坐标,将坐标乘以缩放比例调整大小

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值