亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue中echarts圖表大小適應(yīng)窗口大小且不需要刷新案例

 更新時(shí)間:2020年07月19日 10:44:45   作者:heartbeaty  
這篇文章主要介紹了vue中echarts圖表大小適應(yīng)窗口大小且不需要刷新案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

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

內(nèi)容如下:

// 基于準(zhǔn)備好的dom,初始化echarts實(shí)例
let myChart = this.$echarts.init(document.getElementById('myChart'))
//根據(jù)窗口的大小變動(dòng)圖表 --- 重點(diǎn)
window.onresize = function(){
  myChart.resize();
  //myChart1.resize();  //若有多個(gè)圖表變動(dòng),可多寫
 
}

代碼如下:

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

補(bǔ)充知識(shí):如何解決Vue項(xiàng)目中使用echarts,寬度變化導(dǎo)致圖不能resize問(wèn)題

情景:

開(kāi)發(fā)PC端管理系統(tǒng),項(xiàng)目左側(cè)目錄可收縮,右側(cè)是對(duì)應(yīng)的頁(yè)面,右側(cè)頁(yè)面里面包含了echarts開(kāi)發(fā)的幾個(gè)折線圖,如圖:

當(dāng)左側(cè)目錄展開(kāi)的時(shí)候,會(huì)把右側(cè)頁(yè)面壓縮,右側(cè)頁(yè)面的echarts折線圖寬度就會(huì)發(fā)生改變,因?yàn)轫?xiàng)目考慮到適配大屏的問(wèn)題,所以,右側(cè)兩個(gè)echarts使用的都是百分比寬度,左側(cè)菜單展開(kāi)后的樣子如圖:

會(huì)導(dǎo)致echarts折線圖超出畫布,所以為了解決這個(gè)問(wèn)題,

第一個(gè)想法是:

通過(guò)js邏輯判斷左側(cè)菜單是否展開(kāi)來(lái)動(dòng)態(tài)改變echarts折線圖的寬度,結(jié)果是 沒(méi)有用;

第二個(gè)想法是:

通過(guò)動(dòng)態(tài)判斷左側(cè)菜單是否撐開(kāi),然后在右側(cè)文件mounted生命周期里寫一個(gè)無(wú)限定時(shí)器,每間隔500毫秒動(dòng)態(tài)執(zhí)行下,初始化echarts折線圖的方法,結(jié)果:也沒(méi)用

最終百度了一波,通過(guò)網(wǎng)上其他大佬寫的博客,找到了解決方法:

劃重點(diǎn)

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();
  }
  //監(jiān)聽(tīng)window窗體變化,更新echarts大小
  //window.addEventListener("resize", el[HANDLER])
  //監(jiān)聽(tīng)綁定的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)

然后需要對(duì)應(yīng)的在 echarts 圖 上綁定一個(gè) v-on-echart-resize

不綁定 v-on-echart-resize ,不起效果 ,親測(cè)

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

v-on-echart-resize

這個(gè)是新增的 ,之前沒(méi)有

引入

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();
   });
  });
 },

改完后的樣子:

這樣就能解決 echarts 折線圖,寬度變化 ,導(dǎo)致的圖不能resize問(wèn)題咯~~~

以上這篇vue中echarts圖表大小適應(yīng)窗口大小且不需要刷新案例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue.js Ajax動(dòng)態(tài)參數(shù)與列表顯示實(shí)現(xiàn)方法

    Vue.js Ajax動(dòng)態(tài)參數(shù)與列表顯示實(shí)現(xiàn)方法

    Vue.js是一個(gè)輕巧、高性能、可組件化的MVVM庫(kù),同時(shí)擁有非常容易上手的API。下面通過(guò)本文給大家介紹vue.js ajax動(dòng)態(tài)參數(shù)與列表顯示實(shí)現(xiàn)方法,感興趣的朋友一起看看吧
    2016-10-10
  • Vue 自適應(yīng)高度表格的實(shí)現(xiàn)方法

    Vue 自適應(yīng)高度表格的實(shí)現(xiàn)方法

    這篇文章主要介紹了Vue 自適應(yīng)高度表格的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Vue編譯優(yōu)化實(shí)現(xiàn)流程詳解

    Vue編譯優(yōu)化實(shí)現(xiàn)流程詳解

    編譯優(yōu)化指的是編譯器將模板編譯為渲染函數(shù)的過(guò)程中,盡可能多的提取關(guān)鍵信息,并以此指導(dǎo)生成最優(yōu)代碼的過(guò)程,優(yōu)化的方向主要是區(qū)分動(dòng)態(tài)內(nèi)容和靜態(tài)內(nèi)容,并針對(duì)不同的內(nèi)容采用不同的優(yōu)化策略
    2023-01-01
  • vue3集成jsoneditor的方法詳解

    vue3集成jsoneditor的方法詳解

    JSONEditor是一個(gè)基于Web的工具,用于查看、編輯、格式化和驗(yàn)證JSON,它有各種模式,這篇文章主要為大家介紹了vue3集成jsoneditor的教程,希望對(duì)大家有所幫助
    2023-09-09
  • Iview Table組件中各種組件擴(kuò)展的使用

    Iview Table組件中各種組件擴(kuò)展的使用

    這篇文章主要介紹了Iview Table組件中各種組件擴(kuò)展的使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • Vue自定義元素身上的右鍵事件問(wèn)題

    Vue自定義元素身上的右鍵事件問(wèn)題

    這篇文章主要介紹了Vue自定義元素身上的右鍵事件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 解析VUE中nextTick是什么

    解析VUE中nextTick是什么

    nextTick是Vue提供的一個(gè)全局API,由于Vue的異步更新策略導(dǎo)致我們對(duì)數(shù)據(jù)的修改不會(huì)立刻體現(xiàn),在DOM變化上,此時(shí)如果想要立即獲取更新后的DOM狀態(tài),就需要使用這個(gè)方法,這篇文章主要介紹了解析VUE中nextTick,需要的朋友可以參考下
    2022-11-11
  • vue腳手架vue-cli的卸載與安裝方式

    vue腳手架vue-cli的卸載與安裝方式

    pm是nodejs的包管理和分發(fā)工具,它可以讓javascript開(kāi)發(fā)者能夠更加輕松的共享代碼和共用代碼片段,下面這篇文章主要給大家介紹了關(guān)于vue腳手架vue-cli卸載與安裝的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 使用vscode快速建立vue模板過(guò)程詳解

    使用vscode快速建立vue模板過(guò)程詳解

    這篇文章主要介紹了使用vscode快速建立vue模板過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • vue項(xiàng)目設(shè)置打包后的靜態(tài)文件訪問(wèn)路徑

    vue項(xiàng)目設(shè)置打包后的靜態(tài)文件訪問(wèn)路徑

    這篇文章主要介紹了vue項(xiàng)目設(shè)置打包后的靜態(tài)文件訪問(wèn)路徑,vue項(xiàng)目的最終項(xiàng)目文件需要經(jīng)過(guò)打包輸出,靜態(tài)文件的訪問(wèn)路徑需要在vue.config.js文件中設(shè)置,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02

最新評(píng)論