项目改造适配不同分辨率

最近公司要做项目适配2k、3k、4k屏的分辨率,在网上找了很多中方案,常用且方便的是使用zoom全局缩放,因为是老项目所以对样式进行了重写整体使用了flex+百分比布局

  • 使用

1、在utils文件夹中新建一个zoom.js文件 这个是我自己设置的一个缩放比例,具体大小可根据实际项目具体效果微调

export function setRem () {// 2560*1440 2k// 2560*1600 2k// 3200*1800 3k// 3840*2160 4k// 3840/1920 = 2const max = window.innerWidth;if(max>=3840) {document.body.style.zoom = 2;}else if(max>=2600&&max<3840){document.body.style.zoom = 1.65;}else if(max>=2400&&max<2600){document.body.style.zoom = 1.36;}else if(max>=1900&&max<2400){document.body.style.zoom = 1;}else if(max>=1600&&max<1900){document.body.style.zoom = 0.8;}else if(max>=1200&&max<1600){document.body.style.zoom = max / 1600;}else if(max>=800&&max<1200){document.body.style.zoom = max/1600;}else if(max>=500&&max<800){document.body.style.zoom = max / 800}else{document.body.style.zoom = max / 450;}
}

2、在main.js中导入使用

import { setRem } from './utils/zoom';
setRem();

3、效果图


4、整体布局使用了flex布局或者使用百分比或者用elementui的栅格布局页面就不会乱在对整体内容的缩放效果就会很好。

适配后出现的其他问题

因为我这个项目中使用了好多echarts图表,全局使用zoom缩放导致echarts位置错位(比如鼠标经过饼图区域没反应或者鼠标经过饼图红色区域显示的是蓝色区域的数据等错位问题)

  • 定义一个容器用于存放echarts
//外层盒子<div class="pie-chart">//echarts 容器<div id="pieCharts" :style="`width: 100%;height:100%; zoom:${zoomrAtio};transform:scale(${zoom});transform-origin:0px 0px;`" /></div>
  • 在data中定义两个变量
data() {return {zoom: '',zoomrAtio: '',};},
  • 在初始化容器后再进行添加
 getPieEcharts() {const _this = this;var pieData = _this.pieList.sort(_this.compare("value", false));const pieEcharts = this.$echarts.init(document.getElementById("pieCharts"));const option = {tooltip: {trigger: "item",borderWidth: 0,formatter: function (param) {return `${param.marker}${param.name}: ${param.value.toFixed(2)}kwh, 占比: ${param.percent}%`;},backgroundColor: "rgba(255,255,255,1)",extraCssText: "box-shadow:0 0 10px rgba(0,120,234,0.1);color:#333333;font-size:16px",textStyle: {fontSize: 24,lineHeight: 50,},padding: [5, 15],},color: ["#5570c6","#91cc76","#fac858","#ed6666","#73c0de","#3ba272","#fc8352","#9a61b4","#ecc49f",],legend: {type: "plain",orient: "vertical",icon: "circle",show: true,right: "0%",top: "center",itemHeight: 10,itemGap: 10,formatter: function (name) {var total = 0;var target;for (var i = 0, l = _this.pieList.length; i < l; i++) {total += _this.pieList[i].value;if (_this.pieList[i].name === name) {target = _this.pieList[i].value;}}var arr = [];if (target === 0) {arr = ["{a|" + 0 + "%}", "{b|" + name + "\n}"];} else {arr = ["{a|" + ((target / total) * 100).toFixed(2) + "%}","{b|" + name + "\n}",];}return arr.join("\n");},textStyle: {// label: { show: true },color: this.echartfc,padding: this.pieList.length == 5 ? [0, 10, -10, 0] : [26, 10, -10, 0],rich: {a: {fontSize: 20,verticalAlign: "top",align: "left",lineHeight: 26,fontWeight: 400,},b: {fontSize: 14,align: "left",color: "#999999",lineHeight: this.pieList.length == 5 ? 14 : 30,padding: this.pieList.length == 5 ? [20, -10, 20, 0] : [0, -10, 20, 0],},},},},series: [{type: "pie",radius: "76%",center: ["35%", "50%"],data: pieData,// roseType: 'radius',// 最小的扇区角度(0 ~ 360),用于防止某个值过小导致扇区太小影响交互label: {show: false,position: "inside",formatter: "{b}:{d}%",},itemStyle: {shadowBlur: 10,shadowColor: "rgba(9, 45, 97, 0.2)",shadowOffsetX: 0,shadowOffsetY: 0,},},],};pieEcharts.setOption(option);//上面的不用管//核心代码区域 zoom  zoomrAtio 变量一点要等echarts初始化完成后再加上才有效果,this.$nextTick(()=>{this.zoom =  document.body.style.zoom;this.zoomrAtio =  (1/document.body.style.zoom).toFixed(2);});},

添加上面代码后在不同分辨率情况下鼠标经过移动点击都能正常显示了

公司老项目改造适配不同分辨率2k、3k、4k相关推荐

  1. android 2k屏分辨率,2K、4K、8K分辨率屏幕有用吗?看看它们怎么说!

    Retina Display(视网膜)是苹果最早提出来的概念.2010年,苹果iPhone 4将960×640的像素压缩到一个3.5英寸的显示屏内,使像素密度达到326像素/英寸(ppi),超越了人眼 ...

  2. Spring Boot 如何快速改造老项目?

    1 前言碎语 博主公司一个项目在开发中使用某些功能的时候,受限于spring低版本的限制,故索性将整个模块升级为spring boot,在这里做个记录,希望能帮助到有相同场景的朋友. 整个改造过程非常 ...

  3. 适配2K和4K分辨率

    适配2K和4K分辨率 本方法适用于项目已经在1920*1080分辨率的布局下定型的情况,在适应不同分辨率 1.在utils文件夹下创建一个detectZoom.js文件 export const de ...

  4. 改造ie老项目爬坑之showModalDialog

    改造ie老项目爬坑之showModalDialog 业务场景 公司的老项目都是使用的window.showModalDialog()这种方式实现的打开窗口,并且项目里的提示语均使用的alert和con ...

  5. modbus tcp怎么设计通讯状态是否正常_上海圆通蛟龙老地块改造项目一号厂房消防设备电源监控系统的设计与应用...

    点击蓝字 关注我们 摘要 本文简述了消防设备电源的组成原理,分析了消防设备电源监控系统在应用中的设计依据和相关规范.通过安科瑞消防设备电源监控系统在上海圆通蛟龙老地块改造项目一号厂房项目的实例介绍,阐 ...

  6. 公司已经3个月发不出工资了。没有钱招不到人,老项目一堆烂摊子。

    公司已经3个月发不出工资了.没有钱招不到人,留下一堆老项目的烂摊子. 玩了那么多年,又要从头开始学编程.给自己一年的时间,希望能将濒于死亡公司拯救吧?那天混不下去了,望大家收留!

  7. Redis解决老项目集群Session共享案例与回顾

    老项目突然之间客户要用了而且用户量还不少,后端移动端都需要给升级.第一改进的时候做了移动端与后端的服务分流,这次升级为分布式集群模式.分布式集群模式需要解决Session共享问题和数据一致性分布式锁处 ...

  8. Android 万能适配方案和UI屏幕适配 不同分辨率 最全面 最易懂的

    文章目录 1.屏幕尺寸 2.屏幕分辨率 3.屏幕像素密度 4.图片的适配方案 1.屏幕尺寸 屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米(下面有图文介绍) 比如常见的屏幕尺寸有2.4 ...

  9. 记一次 react 15.3.1 老项目升级到 react 16.7.0 之路

    互相交流学习,请加我微信: iyangyuanjian,QQ:624508914 1.前言 该项目是公司内部服务与外部服务的中台系统,我称之为大杂烩 项目始于:2015年10月8号 18:31:39秒 ...

最新文章

  1. java 矩阵题目_java练习本(20190604)
  2. HDU Problem - 1455 Sticks
  3. java yyyy m d_日期-Java 8时间API:如何将格式“ MM.yyyy”的字符串解析为LocalD
  4. css3 transition的应用
  5. ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)解决办法
  6. (一)边缘AI:口罩检测
  7. c++描述将一个2进制数转化成10进制数(用到初始化栈,进栈,入栈)
  8. python识别验证码ocr_Python3使用tesserocr识别字母数字验证码
  9. java集合框架介绍_Java集合框架全面介绍(一)
  10. linux中批量创文件夹的方法
  11. 关于IIS新部署问题“HTTP500.21”错误代码解决办法
  12. 《CLR via C#》读书笔记 之 计算限制的异步操作
  13. S3cCTF-gyy-Writeup
  14. php简写是哪个国家的货币,php是神马货币全称
  15. pix4d操作流程_Pix4d_mapper中文版操作手册.pdf
  16. JAVA 命令执行 学习笔记
  17. Rk3399 Android 7.1 使用 git 管理代码之后编译不通过
  18. 3D打印机基础知识入门之硬件知识
  19. 《论文笔记》Autonomous Robotic Exploration Based on Multiple Rapidly-exploring
  20. Win11共享文件夹打不开怎么办

热门文章

  1. 安装到树莓派c语言编程ide,【玩树莓】编程篇(四)在树莓派2上运行Cloud9 IDE服务器...
  2. cloudera hue
  3. matlab车头时距,怎么知道自己的车头距离前面的车的距离
  4. 3d人脸识别算法opencv_10行代码实现人脸识别
  5. 陈为说《数据可视化》
  6. 源码分析之Launcher 启动
  7. ChatGpt的出现,前端真的会失业吗?
  8. Solaris 9 x86 u7 for vmware 安装指南
  9. 某X建工OA系统上传附件插件丢失的问题解决方案
  10. Android 动画系列一之帧动画