是否遇见使用侧边栏菜单收缩/展开,echarts容器大小变化,但是echarts不重新自适应容器。或者,window窗口改变但是echarts不随着改变,针对这两种echarts不自适应的情况,分享下自己处理方法。

方法核心是:监听使echarts容器大小发生变化的因素及window窗口改变去调用echarts实例的resize()方法。(方法以VUE框架代码为示例)

一:为什么不能自适应:

    ECharts没有绑定resize事件,显示区域大小发生改变内部并不知道,在容器大小发生改变时需要手动调用resize达到自适应的效果。

二:echarts容器大小改变,重新渲染。

处理思路:侧边栏菜单使用elementUI的导航菜单实现,收缩/展开是根据collapse的boolean值,所以我们把collapse属性值getSidebarFold放到vuex,监听getSidebarFold值的变化去调用echarts实例的resize()方法。

computed: {
...mapGetters({
getSidebarFold: 'getSidebarFold'
})
},
watch: {
/* 监听getSidebarFold变化,解决echarts容器变化,重新渲染 setTimeout时间必须设置,且不能太短 */
getSidebarFold () {
setTimeout(() => {
this.resizeHandle()
}, 500)
} },
mounted () {
this.bar = echarts.init(this.$refs.bar)
this.bar.setOption(this.barOption) this.line = echarts.init(this.$refs.line)
this.line.setOption(this.lineOption)
},
methods: {
resizeHandle () {
this.bar.resize()
this.line.resize()
}
}

三:window窗口大小改变,重新渲染echarts。

处理思路:监听window窗口变化,调用resize(),并在组件销毁时,清理掉监听。

   mounted () {
this.bar = echarts.init(this.$refs.bar)
this.bar.setOption(this.barOption) this.line = echarts.init(this.$refs.line)
this.line.setOption(this.lineOption)
/* 窗口变化时自适应 步骤一:监听窗口变化 */
window.addEventListener('resize', this.resizeHandle)
},
destroyed () {
/* 窗口变化时自适应 步骤三 组件被注销时,缩放函数是匿名函数,且仍然在事件监听列表中,
因此匿名函数和匿名函数中用到的外部变量在组件注销后均不会被清理。
所以要手动清理 */
window.removeEventListener('resize', this.resizeHandle)
},
methods: {
/* 窗口变化时自适应 步骤二 调用echart的 resize() */
resizeHandle () {
this.bar.resize()
this.line.resize()
}
}

容器改变/窗口改变重新渲染echarts的更多相关文章

  1. echarts的图表根据父容器大小的改变而改变(弹窗easy-ui的window窗口)

    1.echarts的图表只绘制一次,所以要想大小随着父容器变化就得调方法重新绘制.所以把绘制图表的方法提出来. <div class="echart"> <div ...

  2. js实现字体和容器宽高随窗口改变

    用于字体大小和容器的宽高字体和宽高设为rem就可以了 var html = document.documentElement; function fonts(){ var hW = html.offs ...

  3. electron 的中文文档的地址 以及 窗口改变的步骤

    electron的中文文档的地址: http://www.kancloud.cn/wizardforcel/electron-doc/137791 1.如何创建窗口和改变窗口: import { Br ...

  4. Docker容器是否可以改变世界?

    Docker容器是否可以改变世界? 2016-01-15 杜亦舒 2016年了,很多大牛开始预测技术趋势,其中一个普遍的观点我也很认同: Docker会更加流行,会改变程序世界 2015年的上半年我接 ...

  5. window 7 改变窗口颜色

    对于刚刚重新安装的window7系统的盆友来说,不能改变窗口的颜色,和别人的window7窗口颜色和样子不一样和不好玩,那么我教大家,如何更改窗口颜色. 首先,重装的系统用软件激活之后,肯定还没还得急 ...

  6. Android 改变窗口标题栏的布局

    Android改变窗口标题栏的布局  第一种方式 --在XML文件里面引入配置文件作为标题. 第二种方式  --动态的代码加入进去. 第三种方式(网上的): 一. 重点 一般应用的Title都是建立应 ...

  7. 【转】VC 隐藏模块、MFC 改变窗口类名

    [转]VC 隐藏模块 void HideDll() { HMODULE hMod = ::GetModuleHandle("MyHook.dll"); PLIST_ENTRY He ...

  8. delphi API: SetWindowPos改变窗口的位置与状态

    SetWindowPos 函数功能:该函数改变一个子窗口,弹出式窗口式顶层窗口的尺寸,位置和Z序.子窗口,弹出式窗口,及顶层窗口根据它们在屏幕上出现的顺序排序.顶层窗口设置的级别最高,并且被设置为Z序 ...

  9. 保护眼睛(改变窗口颜色和Pdf背景颜色)

    保护眼睛(改变窗口颜色和Pdf背景颜色) 昨天用了一个好朋友告诉我的保护眼睛的方法,效果很不错哦-- 今天告诉大家,一起爱护偶们明亮的眼睛吧!!!       首先需要改一下设置,如果常常用电脑很容易 ...

随机推荐

  1. 一、Angular环境的搭建

    1.安装nodejs (1) 下载网址https://nodejs.org/en/download/ (2) 双击进行安装 (3) 打开命令行,输入node -v 和 npm -v 查看是否安装成功 ...

  2. Vue列表渲染-变异方法

    Vue 包含一组观察数组的变异方法,变异方法 (mutation method),顾名思义,会改变被这些方法调用的原始数组 所以它们也将会触发视图更新.这些方法如下: push() pop() shi ...

  3. CF555E Case of Computer Network

    题面:https://www.luogu.com.cn/problem/CF555E 题意:给定一张\(n\)个点\(m\)条边的无向图. 给定\(q\)组有向点对\((s,t)\). 询问是否存在使 ...

  4. 第05章 AOP细节

    第05章 AOP细节 1.切入点表达式 1.1 作用 通过表达式的方式定位一个或多个具体的连接点. 1.2 语法细节 ①切入点表达式的语法格式 execution([权限修饰符] [返回值类型] [简 ...

  5. Flutter中的日期、格式化日期、日期选择器组件

    Flutter中的日期和时间戳 //獲取當前日期 DateTime _nowDate = DateTime.now(); print(_nowDate);//2019-10-29 10:57:20.3 ...

  6. [BZOJ4316]小C的独立集 仙人掌?

    题目链接 因为xls让我每周模拟一次,然后学习模拟中没有学过的东西.所以就来学圆方树. 本来这道题用不着圆方树,但是圆方树是看yyb的博客学的,他在里面讲一下作为一个引子,所以也来写一下. 首先来Ta ...

  7. 5G如何让智能手机再次变得丑陋?

    第一批5G移动终端将于明年到货,这意味着智能手机制造商现在正在研究细节.与过去十年智能手机所看到的很多其他组件改进不同,像更好的相机,更快的处理器和更亮的屏幕,5G无线电将需要一些设计上的妥协,而且看 ...

  8. 人生苦短_我用Python_OS对目录/文件操作_005

    # coding=utf-8 import os # 操作文件和目录 ", os.getcwd()) # 获取当前文件的目录 ", os.path.realpath(__file_ ...

  9. pylab和pyplot的区别

    Pylab combines the functionality of pyplot with the capabilities of NumPy in a single namespace, and ...

  10. 如何使用WidsMob Montage—蒙太奇制作有趣的动物照片?

    今天,越来越多的人有宠物.根据最近的一项调查,超过六成的美国人在家中至少有一只宠物.这些宠物不是动物,而是家庭成员.因此,有趣的动物照片成为社交媒体上的热门话题是有道理的.当您打开朋友圈或短视频APP ...