关于MAP标签中AREA 不能加样式所做的备选方案。(超简单)
图层
本人花费了2天时间 一直寻找解决AREA标签样式或替代方案。
从GITHUB到各个大小博客搜索,也尝试过MAPLIHIGHT这个库(本人用VUE一直引用报错,放弃)。各种其他人的偏方,曲线加框(复杂)这里就不介绍了
先说下灵感 由于MAP标签是针对IMG去做的定位 事件等等很方便 可惜的是AREA不允许加样式 导致加了MAP之后完全看不出这个区域在哪里?用户体验很差! 然后想到既然不能再IMG原生上找问题干脆做一个假的来和IMG联动 。本人的需求是要使很长的图片移动 所以再图片上加浮层使用SVG定位 从而达到AREA定位
使用方法
template:
<div class=“cover” style=“width:3858px;height:288px;margin:0px;” @mousedown.prevent=“dropImage($event)” :style="{ transform: ‘scale(’ + multiples + ‘);’}">
<circle cx=“160” cy=“113” r=“10” stroke=“black” stroke-width=“2” fill="#35ff85" @click=“detailsimg()”/>
js部分:
return:
movepx:’’, //定义一个用来同步IMG偏移的变量
methods:
dropImage(e) {
if (e === null) {
return;
}
this.odiv = e.target; //获取目标元素
// //算出鼠标相对元素的位置
let disX = e.clientX - this.odiv.offsetLeft;
let disY = e.clientY - this.odiv.offsetTop;
console.log(disX);
document.onmousemove = (e) => {
//鼠标按下并移动的事件
//用鼠标的位置减去鼠标相对元素的位置,得到元素的位置
let left = e.clientX - disX;
// let top = e.clientY - disY; 这里是上下移动 如果需要可以解除注释
//绑定元素位置到positionX和positionY上面
// this.positionX = top;
this.positionY = left;
//移动当前元素
this.odiv.style.left = left + "px";
this.movepx = left + "px";
}
},
css:
.cover{
/* width:400px;
height:250px; /
top:0px;
left:0px;
/ background-color:black; /
/ opacity:0; */
position:absolute;
}
以上就是替代 AREA 无法加样式的解决方案