业务需求:点击图片热区跳转到不同的链接地址,同时要自适应窗口尺寸的变化。

问题:热区坐标点不会随着窗口调整变化

解决思路:获取初始的坐标点与图片宽高的比例,然后用比例乘以调整后的窗口宽高,就获得了新的坐标点

根据初始坐标计算新坐标:

function adjustPosition(position) {
// 获取宽高
var pageWidth = document.body.clientWidth;
var pageHeight = document.body.clientHeight;
// 图片原始尺寸
var imageWidth = 1423;
var imageHeigth = 1077; var each = position.split(","); for (var i = 0; i < each.length; i++) {
if(i%2==0){
// 新的y轴坐标
each[i] = Math.round(parseInt(each[i]) * pageHeight / imageHeigth).toString();
}else{
// 新的x轴坐标
each[i] = Math.round(parseInt(each[i]) * pageWidth / imageWidth).toString();
}
}
var newPosition = "";
for (var j = 0; j < each.length; j++) {
newPosition += each[j];
if (j < each.length - 1) {
newPosition += ",";
}
}
return newPosition;
}

获取coords属性的坐标值,并用新计算出来的坐标点进行替换:

function adjust() {
var map = document.getElementById("CribMap");
var area=map.getElementsByTagName('area'); for (var i = 0; i < area.length; i++) {
var oldCoords = area[i].getAttribute("coords");
var newcoords = adjustPosition(oldCoords);
area[i].setAttribute("coords", newcoords);
}
}

运行:adjust();

原文:https://blog.csdn.net/sinat_37881704/article/details/80914194

map元素area热区坐标自适应窗口大小的更多相关文章

  1. html中map area 热区自适应的原生js实现方案

    在做自适应网页的时候,如果在图片中使用了热区map.图片可以通过样式实现:图片大小随页面变化,但是MAP中每个area的坐标并不能通过css直接实现自适应.这篇文章就介绍通过原生js来实现:MAP中每 ...

  2. js动态改变图片热区坐标,手机端图片热区自适应

    <img id='banner1' src="images/banner.jpg" usemap="#banner" border="0&quo ...

  3. 图像映射<map>、<area>

    1.<map>定义图像映射,图像映射(image-map)指带有可单击区域的一幅图像. 2.<area>定义图像映射中的区域,area元素永远嵌套在map元素内部,area元素 ...

  4. map,area标签

    map,area标签 <img src ="planets.gif" alt="Planets" usemap ="#planetmap&quo ...

  5. 解决:Map的area属性标签鼠标Hover可以给area加背景

    css的area标签是不支持hover的,只有a标签才支持.li标签在IE浏览器下才支持,所以采用jquery的mouseenter和mouseleave事件完成.首先讲jQuery对应的事件:1.m ...

  6. 获取html上元素的真正坐标

    使用HTML元素的style.left,style.top,style.width,style.height以及width,height属性,都不能获得元素的真正位置与大小,这些属性取出来的都是原来的 ...

  7. echarts学习总结(二):一个页面存在多个echarts图形,图形自适应窗口大小

    如上图所示一个页面有两个echarts图形:散点图和折线图,如果还写为: myChart.setOption(option); window.onresize = myChart.resize; 则只 ...

  8. css移除a标签及map、area(图片热区映射)点击过后的边框

    默认a标签及其包含的html元素和map中的area(图片热区映射)在点击过后留有默认的蓝色边框,如下图 可以看到,蓝色的边框破坏了页面的整体美感,很多时候我们都是不需要的.通过设置相应的css可以去 ...

  9. html5在手机端关于 map area中的自适应

    https://github.com/stowball/jQuery-rwdImageMaps用这一个插件可自适应!!!

随机推荐

  1. robot用例执行常用命令(转)

    执行命令 执行一个用例 robot -t “testcase_name“ data_test.robot 按用例文件执行 robot data_test.robot或者 robot --suite “ ...

  2. 图数据库 Nebula Graph 的安装部署

    Nebula Graph:一个开源的分布式图数据库.作为唯一能够存储万亿个带属性的节点和边的在线图数据库,Nebula Graph 不仅能够在高并发场景下满足毫秒级的低时延查询要求,还能够实现服务高可 ...

  3. 修改shell命令提示符和命令的输入颜色

    修改命令提示符颜色 修改命令提示符的话,只需修改PS1环境变量即可. PS1='\[\033[01;31m\][\u@\h \W]$ \[\033[00m\]' 效果如图: 修改命令输入的颜色 修改命 ...

  4. (转)GitHub Desktop 拉取 GitHub上 Tag 版本代码

    转自:GitHub Desktop 拉取 GitHub上 Tag 版本代码 一直在使用 GitHub Desktop 图形化 git 管理工具,统一项目框架版本时需要切换到ThinkPHP Tag 分 ...

  5. Cobalt Strike系列教程第一章:简介与安装

    Cobalt Strike是一款超级好用的渗透测试工具,拥有多种协议主机上线方式,集成了提权,凭据导出,端口转发,socket代理,office攻击,文件捆绑,钓鱼等多种功能.同时,Cobalt St ...

  6. Android 组件化最佳实践 ARetrofit 原理

    本文首发于 vivo互联网技术 微信公众号 https://mp.weixin.qq.com/s/TXFt7ymgQXLJyBOJL8F6xg作者:朱壹飞 ARetrofit 是一款针对Android ...

  7. The PostgreSQL installation in windows

    Summary: in this tutorial, we will show you how to install PostgreSQL on your local system for learn ...

  8. 微信小程序的bindtap事件

    在微信小程序中,要想获取元素的属性值,需要用到 bindtap事件,如果想要正确获取到属性值,对属性的命名还有一定要求 如下是正确的方式data-money-Num="9.93": ...

  9. LRU的实现(使用list)

    首先是LRU的定义,LRU表示最近最少使用,如果数据最近被访问过,那么将来被访问的几率也更高. 所以逻辑应该是每次都要将新被访问的页放到列表头部,如果超过了list长度限制,就将列表尾部的元素踢出去. ...

  10. s3c2440裸机-内存控制器(二、不同位宽外设与CPU地址总线的连接)

    不同位宽设备的连接 black 我们先看一下2440芯片手册上外设rom是如何与CPU地址总线连接的. 8bit rom与CPU地址线的连接 8bit*2 rom与CPU地址线的连接 8bit*4 r ...