是否遇见使用侧边栏菜单收缩/展开,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. Spring STS 开发IDE下载安装

    https://spring.io/tools https://spring.io/tools3/sts/all/ Spring STS,全称是SpringSource Tool Suite ,是由s ...

  2. go语言从例子开始之Example30.通道遍历

    在前面的例子中,我们讲过 for 和 range为基本的数据结构提供了迭代的功能.我们也可以使用这个语法来遍历从通道中取得的值 Example: package main import "f ...

  3. Java1.7与1.8新特性

    Java 1.7: switch中可以使用字符串 List<String> list = new ArrayList<>(),即泛型实例化类型自动推断 try块可以不用fina ...

  4. Vue-系统修饰键

    可以用如下修饰符来实现仅在按下相应按键时才触发鼠标或键盘事件的监听器. .ctrl .alt .shift .meta 例如: 例如: <!-- Alt + C --> <input ...

  5. Vue 滚动条动画

    <template> <div class="home-main"> <div class="progress-main"> ...

  6. C#高级编程笔记(11至16章)异步/托管/反射/异常

    11.1.2LINQ语句 LINQ查询表达式以from子句开始,以select或者group子句结束.在这两个子句之间可以跟零个或者多个from.let.where.join或者orderby子句. ...

  7. Unit Testing of Classes in Java

    Every class can have a main method. That is a handy trick for unit testing of classes. For example, ...

  8. 基因id

    每个物种都有一个对应的Taxonomy ID: 9606 :人类 10090 :小鼠

  9. 透明的UITableView

    // // ViewController.m // 透明table // // Created by LiuWei on 2018/4/23. // Copyright © 2018年 xxx. Al ...

  10. ElasticSearch 简介概念及核心

    1.ES是什么 ES是面向文档的Nosql,这意味着它可以存储整个对象或文档.然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索.在es中,你可以对文档(而非成行成列的数据)进行索 ...