首页 > 其他分享 >vue图片热区map-area定位(适应屏幕)

vue图片热区map-area定位(适应屏幕)

时间:2023-02-26 00:22:36浏览次数:153  
标签:map vue documentElement area screeHeight screenWidth document 热区

vue代码

<template>
  <div>
    {{screenWidth}} {{screeHeight}}
    <div v-for="(item, index) in book" :key="index">
      <!-- 当从后台获取数据的时候可以进行替换 -->
      <!-- <img class="image" :src="item.bookUrlRank"  :usemap="'#'+item.id"  :style="{width: screenWidth+'px', height:screeHeight+'px'}" > -->
      <img
        class="image"
        :src="item.bookUrlRank"
        :usemap="'#'+item.id"
        style="width:750px, height:421px"
      >
      <!-- //图片热区 -->
      <map :name="item.id">
        <div v-for="(ite, index) in item.audioLinks" :key="index">
          <!-- <area shape="rect"    target="_blank"  alt="" :coords="ite.coord.split(',')[0]*(screenWidth/421)+','+ite.coord.split(',')[1]*(screeHeight/750)+','+ite.coord.split(',')[2]*(screenWidth/1890)+','+ite.coord.split(',')[3]*(screeHeight/3360)"
          @click="play(ite,index)" border="0"  />-->
          <area
            shape="rect"
            target="_blank"
            alt
            :coords="ite.coord"
            @click="play(ite,index)"
            border="0"
          >
        </div>
      </map>
    </div>
  </div>
</template>

<script>
import axios from "axios";
export default {
  data() {
    return {
      screenWidth: 0, //宽屏幕尺寸
      screeHeight: 0,
      book: [
        {
          id: 25,

          levels: "level1-1",
          bookUrl: "",
          bookUrlType: 4,
          bookUrlRank: "http://lya.ntgyou.cn/m/11128-22060Q644557.jpg",
          audioLinks: [
            {
              coord: "1,1,350,421"
            },
            {
              coord: "350,421,750,1"
            }
          ]
        }
      ]
    };
  },

  methods: {
    //图片热区的点击事件
    play(ite, index) {
      alert("图片区域坐标:" + ite.coord);
    }
  },
  //图片热区
  mounted() {
    //屏幕尺寸变化就重新赋值
    (this.screenWidth = document.documentElement.clientWidth),
      (this.screeHeight = document.documentElement.clientHeight),
      (window.onresize = () => {
        return (() => {
          this.screenWidth = document.documentElement.clientWidth;
          this.screeHeight = document.documentElement.clientHeight;
        })();
      });
  }
};
</script>

<style scoped>
</style>

实现效果

 

标签:map,vue,documentElement,area,screeHeight,screenWidth,document,热区
From: https://www.cnblogs.com/xbinbin/p/17155763.html

相关文章

  • vue获取屏幕长宽
    vue代码<template><div>寬:{{screenWidth}}高:{{screeHeight}}</div></template><script>exportdefault{data(){return{screenWidth:1000,//......
  • Nmap介绍与安装
    一、概述:Nmap是一款开源、免费的网络探测、安全审计的工具电脑端安装了nmap工具之后,就可以利用nmap向其他主机发送数据包,其他主机收到数据包后会返回信息,nmap会根据这些......
  • jdk8中的hashmap
    传送门:jdk7中的HashMap源码解读jdk8中的HashMap与jdk7相比最大的不同就是引入了红黑树,当链表中的元素大于8个时就会把链表转成红黑树,下面来简单分析下8中的HashMap源码。......
  • ts(typescript)讲解for , for...in..., for...of..., while, every, some, map, filte
    for 一般用于已知循环次数varnum:number=5;vari:number;varfactorial=1;for(i=num;i>=1;i--){factorial*=i;}console.log(factorial) f......
  • vue前端调用百度定位API进行定位
    首先进入 百度地图API 申请百度定位使用的域名必须填写,否则无法定位vue前端代码<template><div>城市:{{city}}</div></template><script>importaxiosfrom......
  • mybatis核心配置文件—mappers标签设置映射文件
    <!--加载映射文件--><mappers><!--<mapperresource="mappers/UserMapper.xml"></mapper>--><!--以包的方式引入映射文件,但是必......
  • 【vue3】vue3+ts+vite项目创建
    1、npminitvite@lastest 2、项目目录结构  3、npminstall(i) 安装依赖(是根据package.json中devDependencies的依赖安装的)启动命令 dev  打包命令build预......
  • Vue3 + Vite +TS 项目问题总结
    最近做的几个Vue项目基本都收尾了,总结一下在项目中遇到的问题,希望能帮助遇到同样问题的小伙伴项目情况:我做的项目都是Vue3.2(setup语法)+Vite+TS,一个H5项目,一个PC前......
  • 【vue3】实现全屏功能
    前言全屏效果:实现安装依赖包npmi@vueuse/core调用import{useFullscreen}from'@vueuse/core'useFullscreen的使用文档:https://vueuse.org/core/useFull......
  • Vue3学习笔记(1)
    安装//使用yarn构建//安装yarn需要管理员权限sudonpmiyarn-gyarncreatevitecd..yarnyarndev目录结构见名知义四种......