vite + vue3 —— vue地图大屏项目

2023-10-27

5f22ff66e0214611a1d87a3ebf9fc5a3.gif

0fa5c6911cad4848ba37167e5017793e.gif


9a69fede8b2044a79dd834e3e48f20b4.png​回顾  前期  ​       

前端利器 —— 提升《500倍开发效率》 传一张设计稿,点击一建生成项目 好牛_0.活在风浪里的博客-CSDN博客如果非要说它有什么缺点,那么我觉得就是它会,让你cv大法都没处使!!!比如:公司让你写一个小程序、或h5web页面、UI给了你30张UI图,说让你自己切图,你当时就准备拍案而起,拳棒相加,但突然想起来她好像是你老婆,所以 你忍了!你进入到网站,这个时候犹如战神附体,几秒钟搞定一张设计稿(包括透明图),祝大家2022 越来越强。https://blog.csdn.net/m0_57904695/article/details/126976940

 

ddefaa04c4c3467aad413d82e341b461.png

 677e4ccf77274dd2989107d129f7bf3f.png

a6f96990ec65498cb672f2f1de61669f.gif

9c204ad790ca473eb277c1e34832686a.gif

目录

项目开始时: 

如何选择rem设配项目 (六步骤)

一:安装

二:根据设计稿修改配置 

 三:在main引入

四:cssrem插件

cssrem插件配置

 五:页面使用

六:卸载依赖,复制 flexible.js

配置最小最大宽高 

 下面写入地图

china.vue

 city.vue

home.vue

province.vue


项目开始时: 

 首先大屏需要自适应!要设置最大最小宽高!最大最小宽高要是用px单位!其他所有使用rem单位!

念及此!项目开始

如何选择rem设配项目 (六步骤)

这里分享一种轻量极简的方式 

一:安装

cnpm i -S lib-flexible

二:根据设计稿修改配置 

4149afd573ff4c549438f90ea72b6b6c.png

 因为默认情况下只会在540px分辨率一下生效 所以我们需要根据我们的项目分辨率进行调整

在node_module/lib-flexible/flexible.js中修改代码如下

        // 修改原始的
        // if (width / dpr > 540) {
        //     width = 540 * dpr;
        // }
        // var rem = width / 10;
--------------------------------------------------
        // 修改成为
          // 最小400px,最大适配2560px
        if (width / dpr < 400) {
            width = 400 * dpr;
        } else if (width / dpr > 2560) {
            width = 2560 * dpr;
        }
        // 设置成24等份,设计稿时1920px的,这样1rem就是80px (1920/24=80)方便使用
        var rem = width / 24;

1fa13f5fe81e41e8b30f150fa2ebc823.png

 三:在main引入

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
// 引用
import 'lib-flexible/flexible.js'

createApp(App).use(store).use(router).mount('#app')

这个时候重启项目大家打开浏览器调试器 即可发现在浏览器大小改变的时候 在html根节点上会自动设置一个font-size

四:cssrem插件

我们在写代码的时候发现如果我们都根据80px为1rem,在编写代码的时候手动转换,非常的麻烦 所以我们可以在vscode中安装一个cssrem的插件帮助我们进行转换 这样一来开发过程中会更加的方便

cssrem插件配置

在vscode扩展中找到 cssrem插件 最新名字叫px to rem & rpx 安装到vscode中 点击右下角设置

修改Root Font Size(基准font-size) 配置项为80即可

 fe9796bcbb324ae7a1e0c5c75d22e8f9.png

 五:页面使用

9aa0b804ad5b44409be17d022b30cae5.png

 至此自适应  px转rem 前期已经完成!!!

六:卸载依赖,复制 flexible.js

但是你想一下,我们修改了 node_module ,你将上传到git仓库,别人在拉下来,下载依赖安装,是不是有回到默认的node_module/lib-flexible/flexible.js 配置了,所以我们直接将flexible.js这个文件复制,放在项目中,在将 npm uninstall lib-flexible 卸载了

f3e15a100e9940a384fdcd4a474c70bf.png

 配置完成!!!

配置最小最大宽高 

现在就可以在页面开始书写代码了,注意最大最小宽高需要配合@media,最大最小宽高 只能使用px单位,

比如:我需要小于我笔记本宽/高度就不在缩小,

b905c75048d14445bda5ad69b8f42de4.png

 记录此时到宽高和font-size

最大的外层容器设置最大最小宽高

d8be8deb798a45969c3433eeca0fef3c.png

app.vue设置font-size,不然 虽然限制了最大最小宽但是页面比例还会缩小

 2dcc0eacc3954d76bcd66ba4e86dc985.png

 下面写入地图

                 20080d3fa92b4db69cab189f9c81dd2c.gif                                 

 第一:地图是由点组成线!线组成图!

 第二:如果每块的地图区域标识的文字不在居中位置可以在对应的地图json中调节cp !

 第三:地图数据在 DataV.GeoAtlas地理小工具系列 可以下载 !

 第四:目前地图全是静态json文件,假如要打包,可能会路径不对,所以放置的位置建议在publick中

 第五:省、城、乡镇地图基于中国地图的json,所以第一步要有中国地图的json!

念及此!我将一步步展示地图,必须一遍回,一边懂

e5d0bf23b81f494796149b75024db9f5.png

 路由如下

b257faf2b794460b8403ae14e335f8c0.png

因为地图里所有页面是home的children ,所以在页面使用<router-view></router-view>用于展示地地图

222f02f9d57349c58ea53b417de98c1d.png

每行重要的地方都有注释,总结:将所需的地图文件准备好,配好路由,建好页面,基本就成了,到此也就基本结束了,最后祝大家2022 越来越强 我会吧项目上传,也把代码全部贴到博文中,希望大家bug减少,早早下班

china.vue

<template>
  <!-- 中国地图 省级 一级页面 -->
  <div id="main"></div>
</template>

<script setup>
import * as echarts from "echarts";
import jsonData from "../../../public/china.json";
import { onMounted, reactive } from "vue";
import { useRouter } from "vue-router";
const router = useRouter();

let state = reactive({
  // ename为了获取省份的名字
  dataList: [
    { ename: "nanhaizhudao", name: "南海诸岛" },
    { ename: "beijing", name: "北京" },
    { ename: "tianjin", name: "天津" },
    { ename: "shanghai", name: "上海" },
    { ename: "chongqing", name: "重庆" },
    { ename: "hebei", name: "河北" },
    { ename: "henan", name: "河南" },
    { ename: "yunnan", name: "云南" },
    { ename: "liaoning", name: "辽宁" },
    { ename: "heilongjiang", name: "黑龙江" },
    { ename: "hunan", name: "湖南" },
    { ename: "anhui", name: "安徽" },
    { ename: "shandong", name: "山东" },
    { ename: "xinjiang", name: "新疆" },
    { ename: "jiangsu", name: "江苏" },
    { ename: "zhejiang", name: "浙江" },
    { ename: "jiangxi", name: "江西" },
    { ename: "hubei", name: "湖北" },
    { ename: "guangxi", name: "广西" },
    { ename: "gansu", name: "甘肃" },
    { ename: "jin", name: "山西" },
    { ename: "neimenggu", name: "内蒙古" },
    { ename: "shanxi", name: "陕西" },
    { ename: "jilin", name: "吉林" },
    { ename: "fujian", name: "福建" },
    { ename: "guizhou", name: "贵州" },
    { ename: "guangdong", name: "广东" },
    { ename: "qinghai", name: "青海" },
    { ename: "xizang", name: "西藏" },
    { ename: "sichuan", name: "四川" },
    { ename: "ningxia", name: "宁夏" },
    { ename: "hainan", name: "海南" },
    { ename: "taiwan", name: "台湾" },
    { ename: "xianggang", name: "香港" },
    { ename: "aomen", name: "澳门" },
  ],
});

onMounted(() => {
  let dataList = state.dataList;
  // 模拟数据,给dataList添加一个随机的value值
  for (let i = 0; i < dataList.length; i++) {
    dataList[i].value = Math.floor(Math.random() * 1000 - 1);
  }
  var myChart = echarts.init(document.getElementById("main"));
  // 注册中国地图 第一个参数为地图的名字,第二个参数为地图的json数据,第一个要和geo map一样
  echarts.registerMap("china", jsonData);
  // 配置项
  var option = {
    tooltip: {
      show: true,
      trigger: "item",
      alwaysShowContent: false,
      backgroundColor: "#0C121C",
      borderColor: "rgba(0, 0, 0, 0.16);",
      hideDelay: 100,
      triggerOn: "mousemove",
      enterable: true,
      formatter: "",
      textStyle: {
        color: "#DADADA",
        fontSize: "12",
        width: 20,
        height: 30,
        overflow: "break",
      },
      showDelay: 100,
    },

    visualMap: {
      min: 0,
      max: 1000,
      text: ["高", "低"], //两端的文本
      realtime: false,
      calculable: true,
      itemWidth: 20, //图形的宽度,即长条的宽度。
      itemHeight: 90, //图形的高度,即长条的高度。
      align: "auto", //指定组件中手柄和文字的摆放位置.可选值为:‘auto’ 自动决定。‘left’ 手柄和label在右。‘right’ 手柄和label在左。‘top’ 手柄和label在下。‘bottom’ 手柄和label在上。
      left: "left", //组件离容器左侧的距离,‘left’, ‘center’, ‘right’,‘20%’
      top: "60%", //组件离容器上侧的距离,‘top’, ‘middle’, ‘bottom’,‘20%’
      right: "auto", //组件离容器右侧的距离,‘20%’
      bottom: "auto", //组件离容器下侧的距离,‘20%’
      orient: "vertical", //图例排列方向
      inRange: {
        color: ["#141c48", "#0d3d86"],
      },
      //设置字体颜色
      textStyle: {
        color: "#ffffff",
      },
    },
    geo: {
      map: "china",
      roam: true, //是否开启平游或缩放
      zoom: 0.9, //当前视角的缩放比例
      emphasis: {
        label: {
          color: "#fff",
        },
        // 鼠标放上高亮样式
        itemStyle: {
          areaColor: "#389BB7",
          borderWidth: 0,
        },
      },
      label: {
        // 通常状态下的样式
        show: true,
        color: "#fff",
        // 鼠标放上去的样式
      },
      // 地图区域的样式设置
      itemStyle: {
        borderColor: "rgba(147, 235, 248, 1)",
        borderWidth: 1,
        areaColor: {
          type: "radial",
          x: 0.5,
          y: 0.5,
          r: 0.8,
          colorStops: [
            {
              offset: 0,
              color: "rgba(147, 235, 248, 0)", // 0% 处的颜色
            },
            {
              offset: 1,
              color: "rgba(147, 235, 248, .2)", // 100% 处的颜色
            },
          ],
          globalCoord: false,
        },
        shadowColor: "rgba(128, 217, 248, 1)",
        shadowOffsetX: -2,
        shadowOffsetY: 2,
        shadowBlur: 10,
      },
      layoutCenter: ["50%", "50%"],
      layoutSize: "100%",
    },
    // 鼠标悬浮提示框
    series: [
      {
        name: "省份",
        type: "map",
        geoIndex: 0,
        data: dataList,
      },
    ],
  };
  //设置配置项
  myChart.setOption(option);
  // 点击事件地图 enmae为获取省地图的json数据
  myChart.on("click", function (params) {
    // console.log("									
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vite + vue3 —— vue地图大屏项目 的相关文章

随机推荐

  • robot framework实现web和app自动化

    前言 本文 仅适用于完全没接触过rf的小白 也是作为自己学习的一个记录 一 工欲善其事必先利其器 第一步 环境安装 1 需要python环境 去官网下载python解释器 配置环境变量 2 安装robotframework pip inst
  • Python如何实现自动发送直播弹幕,让美女主播一眼看到你

    前言 嘀嘀嘀 你喜欢的女主播开始直播了 咱就是说 时隔两个月 我又回来了 这次不是忘记密码 而是直接忘记这个账号了哈哈 报一丝啊报一丝 不过这次我真的就是会常更新的 因为看到后台还是有小伙伴私信我的 结果才看到信息 每次看直播 不知道大家有
  • C语言--数组&指针笔试题解析(指针:你看我几分像从前)

    尊贵的各位大厂码农你们好 是的 没错 我又来找你们来帮我指正文章了 今天的主题是数组和指针的笔试题专栏 大家给掌掌眼 有问题的话还请帮忙斧正哦 目录 前言 一 数组笔试题 一 一维数组 二 字符数组 2 1 直接赋值型的字符数组 2 2 字
  • 人体姿态2019(四)SemGCN——Semantic Graph Convolutional Networks for 3D Human Pose Regression

    Semantic Graph Convolutional Networks for 3D Human Pose Regression 论文解读 Abstract 1 Introduction 2 Related work 3 Semanti
  • opencv3.4.1mat和Iplimage*互转

    opencv3 4 1mat和Iplimage 互转 Mat转IplImage Mat Img imread 1 jpg IplImage pBinary IplImage Img 浅拷贝 IplImage input cvCloneIma
  • 88 扑克牌大小

    题目描述 扑克牌游戏大家应该都比较熟悉了 一副牌由54张组成 含3 A 2各4张 小王1张 大王1张 牌面从小到大用如下字符和字符串表示 其中 小写joker表示小王 大写JOKER表示大王 3 4 5 6 7 8 9 10 J Q K A
  • Shiro实战学习笔记(3)- 授权

    1 授权 授权可简单理解为who对what which 进行How操作 Who 即主体 Subject 主体需要访问系统中的资源 What 即资源 Resource 如系统菜单 页面 按钮 类方法 系统商品信息等 资源包括资源类型和资源实例
  • CSDN、博客园、简书、思否、掘金,程序员最佳中文论坛我该怎么选

    一 技术论坛有哪些 目前市面上最大的技术论坛主要分为五个 CSDN 博客园 简书 思否 掘金 1 1 CSDN CSDN是全球知名中文IT技术交流平台 创建于1999年 包含原创博客 精品问答 职业培训 技术论坛 资源下载等产品服务 提供原
  • Linux 系统编程--fcntl()读写锁实例

    fcntl 1 功能描述根据文件描述词来操作文件的特性 2 用法 读写锁实例 1 给文件加读锁 2 给文件加写锁 先执行读锁再执行写锁结果如下 先运行写锁再运行读锁的话结果如下 在多进程对同一个文件进行读写访问时 为了保证数据的完整性 有事
  • 命令行

    linux windows 端口占用检查 window R组合键 调出命令窗口 netstat aon findstr 8081 查看端口pid即1244 tasklist findstr 1244 查看是哪个进程占用 taskkill p
  • Ubuntu下如何关闭指定端口的进程

    1 查看该端口的占用情况 lsof i 端口号 2 关闭进程 kill PID 可能不止一个进程
  • linux服务器 top 查看 内存占用详情

    前言 前几天登录云服务器突然发现没几个服务内存竟然快占满了 于是赶快top查看 发现直接top查看的话 也不太好分析是哪个应用占用的内存比较大 于是谷歌了一番记录了以下几种查内存占用情况的方法 查看内存占用情况的几种方法 free命令 命令
  • vue+elementui table表格自定义表头

    elementui table表格自定义表头
  • C++的STL库常用API--stack

    stack的简介 stack是堆栈容器 是一种 先进后出 的容器 stack是简单地装饰deque容器而成为另外的一种容器 stack使用之前的准备 include
  • 从Diffusion Model到score-based generative models再到Consistency Models的介绍

    从Diffusion Model到score based generative models再到Consistency Models的介绍 0 前言 图片介绍以PPT的形式 0 前言 完整的PPT在这 https download csdn
  • 大数据学习-bug03-HDFS web页面文件访问出错

    项目场景 学习HDFS时遇到的一个小问题 问题描述 当从本地上传文件 或者执行jar包完成的结果在终端界面可以查看其具体内容 但是在web页面无法查看 报错Couldn t preview the file 原因分析 1 hdfs site
  • 应用Apache Axis2 实现Webservice发布

    由于最近需要做webservice接口 所以google了一下 发现Apacle有个Axis2插件 一直觉得Apache的插件还是蛮好用的 于是决定应用Axis2来实现Webservice 第一次做webservice 呵呵有很多不懂的地方
  • 初识C语言之详解char类型

    文章目录 一 预备知识 二 char类型 三 声明与初始化 1 声明 2 字符常量和初始化 3 非打印字符 一 预备知识 字符的定义 字符指类字形单位或符号 包括字母 数字 运算符号 标点符号和其他符号 以及一些功能性符号 在C语言中 用单
  • 深度学习环境配置4——windows下的tensorflow-cpu=1.13.2环境配置

    深度学习环境配置4 windows下的tensorflow cpu 1 13 2环境配置 注意事项 一 2021 10 8更新 学习前言 环境内容 环境配置 一 Anaconda安装 1 Anaconda的下载 2 Anaconda的安装
  • vite + vue3 —— vue地图大屏项目

    回顾 前期 前端利器 提升 500倍开发效率 传一张设计稿 点击一建生成项目 好牛 0 活在风浪里的博客 CSDN博客如果非要说它有什么缺点 那么我觉得就是它会 让你cv大法都没处使 比如 公司让你写一个小程序 或h5web页面 UI给了你
Powered by Hwhale