亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

vue中echarts圖表大小適應窗口大小且不需要刷新案例

瀏覽:99日期:2023-01-03 18:38:33

我就廢話不多說了,大家還是直接看代碼吧~

內容如下:

// 基于準備好的dom,初始化echarts實例let myChart = this.$echarts.init(document.getElementById(’myChart’))//根據窗口的大小變動圖表 --- 重點window.onresize = function(){ myChart.resize(); //myChart1.resize(); //若有多個圖表變動,可多寫 }

代碼如下:

mounted() { const that = this window.onresize = () => {// 根據窗口大小調整曲線大小 let myChart = this.$echarts.init(document.getElementById(’myChart’)); myChart.resize(); } },

補充知識:如何解決Vue項目中使用echarts,寬度變化導致圖不能resize問題

情景:

開發PC端管理系統,項目左側目錄可收縮,右側是對應的頁面,右側頁面里面包含了echarts開發的幾個折線圖,如圖:

vue中echarts圖表大小適應窗口大小且不需要刷新案例

當左側目錄展開的時候,會把右側頁面壓縮,右側頁面的echarts折線圖寬度就會發生改變,因為項目考慮到適配大屏的問題,所以,右側兩個echarts使用的都是百分比寬度,左側菜單展開后的樣子如圖:

vue中echarts圖表大小適應窗口大小且不需要刷新案例

vue中echarts圖表大小適應窗口大小且不需要刷新案例

會導致echarts折線圖超出畫布,所以為了解決這個問題,

第一個想法是:

通過js邏輯判斷左側菜單是否展開來動態改變echarts折線圖的寬度,結果是 沒有用;

第二個想法是:

通過動態判斷左側菜單是否撐開,然后在右側文件mounted生命周期里寫一個無限定時器,每間隔500毫秒動態執行下,初始化echarts折線圖的方法,結果:也沒用

最終百度了一波,通過網上其他大佬寫的博客,找到了解決方法:

劃重點

1.引入 element-resize-detector依賴

2.新建 chart.resize.js 文件,添加下面代碼

import echarts from ’echarts’;import Vue from ’vue’;import elementResizeDetectorMaker from 'element-resize-detector'export var version = ’0.0.1’;var compatible = (/^2./).test(Vue.version);if (!compatible) { Vue.util.warn(’vue echarts resize directive ’ + version + ’ only supports Vue 2.x, and does not support Vue ’ + Vue.version);}let HANDLER = '_vue_echarts_resize_handler'function bind(el) { unbind(el); el[HANDLER] = function () { let chart = echarts.getInstanceByDom(el); if (!chart) { return; } chart.resize(); } //監聽window窗體變化,更新echarts大小 //window.addEventListener('resize', el[HANDLER]) //監聽綁定的div大小變化,更新echarts大小 elementResizeDetectorMaker().listenTo(el,el[HANDLER]) }function unbind(el) { //window.removeEventListener('resize', el[HANDLER]); elementResizeDetectorMaker().removeListener(el,el[HANDLER]) delete el[HANDLER];}var directive = { bind: bind, unbind: unbind};Vue.directive('on-echart-resize', directive)

然后需要對應的在 echarts 圖 上綁定一個 v-on-echart-resize

不綁定 v-on-echart-resize ,不起效果 ,親測

<template> <div ref='leftEchartsLine' v-on-echart-resize></div></template>

v-on-echart-resize

這個是新增的 ,之前沒有

引入

import elementResizeDetectorMaker from 'element-resize-detector';

import './chart.resize';

然后在 mounted 寫

mounted() { let erd = elementResizeDetectorMaker(); let that = this; erd.listenTo(document.getElementById('leftEchartsLine'), (element) => { let width = element.offsetWidth; let height = element.offsetHeight; that.$nextTick(() => { //使echarts尺寸重置 that.echarts.init(document.getElementById('leftEchartsLine')).resize(); }); }); },

改完后的樣子:

vue中echarts圖表大小適應窗口大小且不需要刷新案例

這樣就能解決 echarts 折線圖,寬度變化 ,導致的圖不能resize問題咯~~~

以上這篇vue中echarts圖表大小適應窗口大小且不需要刷新案例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Vue
相關文章:
主站蜘蛛池模板: x8x8国产在线观看2021 | 国产视频不卡 | 久久线看观看精品香蕉国产 | a级黄色毛片视频 | 久草手机在线观看视频 | 免费超级淫片日本高清视频 | 中文字幕最新在线 | 日批视频在线 | 好爽好深好猛好舒服视频上 | 亚洲1区2区3区4区 | 日韩免费一区二区三区 | 欧美一级片在线免费观看 | 真人一级一级特黄高清毛片 | 伊人激情在线 | 在线永久免费观看的a站视频 | 女人一级毛片免费观看 | 一级做a爱过程免费视频超级 | 久久免费精彩视频 | 国产精品久久久久久久网站 | 一级呦女专区毛片 | 亚洲无线码一区二区三区在线观看 | 久青草视频97国内免费影视 | 国产视频欧美 | 亚洲欧美日韩精品久久亚洲区色播 | 国产精品美女自在线观看免费 | 三级毛片在线免费观看 | 日韩欧美在线视频 | 日本精品一区二区三区在线 | 日本一级淫片a 免费播放口 | 免费观看a级毛片在线播放 免费观看a级片 | 日本午夜一级特黄毛片 | 91麻豆国产极品在线观看洋子 | 人与牲动交bbbbxxxx | 亚洲国产小视频 | 日韩欧美一区二区三区久久 | 特黄色片 | 在线视频观看免费视频18 | 日韩视频在线观看一区二区 | 在线免费观看黄色片 | 精品亚洲一区二区三区 | 九色国产在视频线精品视频 |