关于MAP标签中AREA 不能加样式所做的备选方案。(超简单)

当遇到AREA标签无法添加样式的问题时,作者提出了一个创新的解决方案,通过在IMG图层上方添加SVG浮层来实现区域高亮。具体做法是在Vue项目中,利用SVG的circle元素模拟AREA的热点,并绑定点击事件。通过监听鼠标移动事件,实现SVG元素跟随鼠标移动,从而达到类似AREA的交互效果,提升了用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于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 无法加样式的解决方案

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值