电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

vue項目中echarts自適應問題的高級解決過程

瀏覽:182日期:2022-06-09 17:38:59
目錄
  • 一、問題描述
    • 1.1 頁面布局
    • 1.2 問題復現
  • 二、解決過程
    • 2.1 增加圖表resize
    • 2.2 解決canvas畫布大小和容器大小不一致的問題
    • 2.3 動手添加延時
    • 2.4 監聽瀏覽器onresize事件
  • 三、解決方案
    • 總結

      一、問題描述

      1.1 頁面布局

      項目首頁中有多個echarts圖表,如下圖所示:

      頁面布局如下:

      index頁面(綠框)是父頁面,父頁面中包含A頁面(紅框)和B頁面(橙框),A頁面中有3塊,共5個echarts圖,B頁面中有2部分,左側部分中有3個餅圖,右側部分是列表,綜上,index頁面共8個ecahrts圖。ps:A頁面和B頁面都是組件化書寫。

      1.2 問題復現

      點擊瀏覽器右上角的 向下還原 按鈕后,圖表顯示不正確,如下圖:

      原因:未進行圖表自適應

      二、解決過程

      2.1 增加圖表resize

      window.addEventListener("resize", function () {  chart.resize()})

      增加后,點擊瀏覽器向下還原按鈕后,效果如下:

      這里有個奇怪的現象:點擊瀏覽器向下還原按鈕,圖表顯示有問題;但是鼠標拖拽瀏覽器放大或縮小,圖表顯示正常(百思不得其解……)

      通過Elements檢查發現,canvas畫布大小與容器大小不一致。ps:pink背景是容器大小

      2.2 解決canvas畫布大小和容器大小不一致的問題

      利用resize設置width、height:

      // 獲取容器的寬高let width = this.$refs.chart1.offsetWidthlet height= this.$refs.chart1.offsetHeight// 一般這一步是寫chart1.resize(),讓圖表根據當前屏幕尺寸自適應,但是當前canvas畫布大小與容器大小不一致,而容器大小已經設置了百分比,所以可以在resize里面手動設置寬高,使其占滿整個容器chart1.resize({   // es6解構   width,   height})

      每個圖表都設置,完成后效果如下:

      依然顯示有問題,要崩潰了……

      耐心再找找原因!!!

      苦思冥想后,猜測有可能的原因:窗口改變時 EChart 會立即獲取寬度,但是此時寬度還在變化中,不是最終值,所以 ECharts 顯示有問題,修改方法是添加一個延時。

      2.3 動手添加延時

      window.addEventListener("resize", function () {  setTimeout(()=>{     chart1.resize()  }, 100)})

      添加完成后,依然沒效果……

      是不是延時時間設置的有點短???那就設置500毫秒試試,來吧

      依然沒效果,生氣了

      想想其他方法,苦思冥想中,有了,那我監聽瀏覽器onresize事件可不可以?監聽到后,重新渲染圖表

      2.4 監聽瀏覽器onresize事件

      去掉每個圖表對resize事件的監聽,在父組件中增加對onresize事件的監聽。

      let _this = this;window.onresize = function() {  _this.$nextTick(()=>{    setTimeout(()=>{      _this.$refs.chartLine.executeAllChart1() // 重新渲染echarts的方法      if(_this.isCollectAdmin) {_this.$refs.tableLine.executeAllChart2() // // 重新渲染echarts的方法      }    }, 500)  })}

      添加完后,看效果:

      哇偶,成功了!

      標簽: JavaScript
      主站蜘蛛池模板: 屏蔽泵厂家,化工屏蔽泵_维修-淄博泵业 | 杭州用友|用友软件|用友财务软件|用友ERP系统--杭州协友软件官网 | Pos机办理_个人商户免费POS机申请-拉卡拉办理网 | 雷达液位计_超声波风速风向仪_雨量传感器_辐射传感器-山东风途物联网 | 深圳成考网-深圳成人高考报名网 深圳工程师职称评定条件及流程_深圳职称评审_职称评审-职称网 | 铝合金重力铸造_铝合金翻砂铸造_铝铸件厂家-东莞市铝得旺五金制品有限公司 | 淄博不锈钢无缝管,淄博不锈钢管-鑫门物资有限公司 | 中控室大屏幕-上海亿基自动化控制系统工程有限公司 | 青海电动密集架_智能密集架_密集架价格-盛隆柜业青海档案密集架厂家 | 卫生人才网-中国专业的医疗卫生医学人才网招聘网站! | 铝板冲孔网,不锈钢冲孔网,圆孔冲孔网板,鳄鱼嘴-鱼眼防滑板,盾构走道板-江拓数控冲孔网厂-河北江拓丝网有限公司 | 广州昊至泉水上乐园设备有限公司 | 安徽泰科检测科技有限公司【官方网站】 | 昆明网络公司|云南网络公司|昆明网站建设公司|昆明网页设计|云南网站制作|新媒体运营公司|APP开发|小程序研发|尽在昆明奥远科技有限公司 | 打孔器,打孔钳厂家【温州新星德牌五金工具】 | 泰来华顿液氮罐,美国MVE液氮罐,自增压液氮罐,定制液氮生物容器,进口杜瓦瓶-上海京灿精密机械有限公司 | 钢格栅板_钢格板网_格栅板-做专业的热镀锌钢格栅板厂家-安平县迎瑞丝网制造有限公司 | 代理记账_公司起名核名_公司注册_工商注册-睿婕实业有限公司 | 免费B2B信息推广发布平台 - 推发网| 安徽合肥格力空调专卖店_格力中央空调_格力空调总经销公司代理-皖格制冷设备 | 净化车间装修_合肥厂房无尘室设计_合肥工厂洁净工程装修公司-安徽盛世和居装饰 | 杜甫仪器官网|实验室平行反应器|升降水浴锅|台式低温循环泵 | 湖南成人高考报名-湖南成考网| 数字展示在线_数字展示行业门户网站| 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 湖南长沙商标注册专利申请,长沙公司注册代理记账首选美创! | 济南画室培训-美术高考培训-山东艺霖艺术培训画室 | [品牌官网]贵州遵义双宁口腔连锁_贵州遵义牙科医院哪家好_种植牙_牙齿矫正_原华美口腔 | 南京泽朗生物科技有限公司-液体饮料代加工_果汁饮料代加工_固体饮料代加工 | Copeland/谷轮压缩机,谷轮半封闭压缩机,谷轮涡旋压缩机,型号规格,技术参数,尺寸图片,价格经销商 CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 破碎机锤头_耐磨锤头_合金锤头-鼎成机械一站式耐磨铸件定制服务 微型驱动系统解决方案-深圳市兆威机电股份有限公司 | 螺旋压榨机-刮泥机-潜水搅拌机-电动泥斗-潜水推流器-南京格林兰环保设备有限公司 | 石磨面粉机|石磨面粉机械|石磨面粉机组|石磨面粉成套设备-河南成立粮油机械有限公司 | 法钢特种钢材(上海)有限公司 - 耐磨钢板、高强度钢板销售加工 阀门智能定位器_电液动执行器_气动执行机构-赫尔法流体技术(北京)有限公司 | 首页_中夏易经起名网 | 旋振筛|圆形摇摆筛|直线振动筛|滚筒筛|压榨机|河南天众机械设备有限公司 | 北京律师咨询_知名专业北京律师事务所_免费法律咨询 | 蒜肠网-动漫,二次元,COSPLAY,漫展以及收藏型模型,手办,玩具的新媒体.(原变形金刚变迷TF圈) | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 艺术生文化课培训|艺术生文化课辅导冲刺-济南启迪学校 | 便携式XPDM露点仪-在线式防爆露点仪-增强型烟气分析仪-约克仪器 冰雕-冰雪世界-大型冰雕展制作公司-赛北冰雕官网 |