容器改变/窗口改变重新渲染echarts
是否遇见使用侧边栏菜单收缩/展开,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的更多相关文章
- echarts的图表根据父容器大小的改变而改变(弹窗easy-ui的window窗口)
1.echarts的图表只绘制一次,所以要想大小随着父容器变化就得调方法重新绘制.所以把绘制图表的方法提出来. <div class="echart"> <div ...
- js实现字体和容器宽高随窗口改变
用于字体大小和容器的宽高字体和宽高设为rem就可以了 var html = document.documentElement; function fonts(){ var hW = html.offs ...
- electron 的中文文档的地址 以及 窗口改变的步骤
electron的中文文档的地址: http://www.kancloud.cn/wizardforcel/electron-doc/137791 1.如何创建窗口和改变窗口: import { Br ...
- Docker容器是否可以改变世界?
Docker容器是否可以改变世界? 2016-01-15 杜亦舒 2016年了,很多大牛开始预测技术趋势,其中一个普遍的观点我也很认同: Docker会更加流行,会改变程序世界 2015年的上半年我接 ...
- window 7 改变窗口颜色
对于刚刚重新安装的window7系统的盆友来说,不能改变窗口的颜色,和别人的window7窗口颜色和样子不一样和不好玩,那么我教大家,如何更改窗口颜色. 首先,重装的系统用软件激活之后,肯定还没还得急 ...
- Android 改变窗口标题栏的布局
Android改变窗口标题栏的布局 第一种方式 --在XML文件里面引入配置文件作为标题. 第二种方式 --动态的代码加入进去. 第三种方式(网上的): 一. 重点 一般应用的Title都是建立应 ...
- 【转】VC 隐藏模块、MFC 改变窗口类名
[转]VC 隐藏模块 void HideDll() { HMODULE hMod = ::GetModuleHandle("MyHook.dll"); PLIST_ENTRY He ...
- delphi API: SetWindowPos改变窗口的位置与状态
SetWindowPos 函数功能:该函数改变一个子窗口,弹出式窗口式顶层窗口的尺寸,位置和Z序.子窗口,弹出式窗口,及顶层窗口根据它们在屏幕上出现的顺序排序.顶层窗口设置的级别最高,并且被设置为Z序 ...
- 保护眼睛(改变窗口颜色和Pdf背景颜色)
保护眼睛(改变窗口颜色和Pdf背景颜色) 昨天用了一个好朋友告诉我的保护眼睛的方法,效果很不错哦-- 今天告诉大家,一起爱护偶们明亮的眼睛吧!!! 首先需要改一下设置,如果常常用电脑很容易 ...
随机推荐
- K8S存储相关yaml
一.ConfigMap 1.使用目录创建 vim game.properties vim ui.properties 在一个文件夹下创建两个文件,通过以下命令创建 kubectl create con ...
- BZOJ-2337 XOR和路径(HNOI2011)概率DP+概率的线性叠加
题意:给出n个点和m条边,每条边有权值wi,从1出发,每次等概率选一条出边走,直到终点n停止,得到的值是路径所有边的异或和.问异或和期望. 解法:这道题非常有意思!首先比较直观的想法就是dp[x]代表 ...
- Django--Auth模块使用
1.Auth模块介绍 1.1 Auth模块是Django自带的用户认证模块,用于处理用户账户.群组.许可和基于cookie的用户回话 Django的认证系统主要包括下面几个部分 1.用户 2.许可 3 ...
- jenkins持续集成(一): 在Linux下的安装与配置
撸了今年阿里.网易和美团的面试,我有一个重要发现.......>>> 前提: 安装了JDK,并配置好环境变量:JAVA_HOME 安装了Maven,并配置好环境变量:MAVEN_HO ...
- Spring-quartz定时系统多任务配置
<!-- 启动触发器的配置开始 --> <bean name="startQuertz" lazy-init="false" autowire ...
- C++链接器
链接器把多个二进制的目标文件(object file)链接成一个单独的可执行文件 在链接过程中,它必须把符号(变量名.函数名等一些列标识符)用对应的数据的内存地址(变量地址.函数地址等)替代,以完成程 ...
- bzoj1495 [NOI2006]网络收费 复杂度分析+树上背包
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=1495 题解 通过观察可以发现,对于一个 \(lca\),如果 \(nA \leq nB\),那 ...
- I/O性能优化
原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/11525014.html Linux 系统的 I/O 栈图 I/O性能指标 根据指标找工具 根据工具查指 ...
- java获取当月日期 和 周末
/** * java获取 当月所有的日期集合 * @return */public static List<Date> getDayListOfMonth() { List list = ...
- hdu 1007 Quoit Design (经典分治 求最近点对)
Problem Description Have you ever played quoit in a playground? Quoit is a game in which flat rings ...