是否遇见使用侧边栏菜单收缩/展开,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. shell判断用户是否已经在系统中登录

  2. vue,一路走来(8)--mint-ui的组件问题

    Mint-ui的复选框列表Checklist和Radio 由于我在main.js里已经引用了全部的组件了,这里就不再按需引入了. 一直想着如何将自己的数据添加到 label 和 value里面,后面发 ...

  3. Linux之scp命令的使用

    Linux之scp命令的使用 1. scp简介 1.1 命令功能: scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令.linux的scp命令可 ...

  4. java下载文件demo

    java通过http方式下载文件 https://www.cnblogs.com/tiancai/p/7942201.html

  5. oracle-SQL语句执行原理和完整过程详解

    SQL语句执行过程详解 一条sql,plsql的执行到底是怎样执行的呢? 一.SQL语句执行原理 第一步:客户端吧语句发个服务端执行 当我们在客户端执行select语句时,客户端会把这条SQL语句发送 ...

  6. better-scroll 的使用

    1.安装 cnpm install better-scroll --save 2.引入 import BScroll from "better-scroll"; 3.初始化 dat ...

  7. django 添加分页功能的包

    Django pagination based upon the core pagination module

  8. VUE中使用canvas做签名功能,兼容IE

    <template>         <div>           <div class="msgInput">             &l ...

  9. 【leetcode】828. Unique Letter String

    题目如下: A character is unique in string S if it occurs exactly once in it. For example, in string S = ...

  10. Setting proxy for Windows CMD and Linux Terminal

    setting proxy for Windows CMD and Linux Terminal Linux Terminal: set http_proxy=http://127.0.0.1:811 ...