echarts学习笔记之图表自适应问题详解


Posted in Javascript onNovember 22, 2017

前言

为了直观查看公司服务器各个进程占用的内存动态情况,我使用echarts进行数据可视化,具体的实现过程按下不表。

最后实现的效果如图:

echarts学习笔记之图表自适应问题详解

然后问题就来了,因UI采用了Bootstrap响应式框架,所以除了图表之外其他都是响应式。当窗口缩小后,就会发生很尴尬的出界事件。

如图:

echarts学习笔记之图表自适应问题详解

针对这个问题,刚开始的解决思路及方法:把echart容器的宽度设置为100%;

<div class="col-sm-12 row" id="logic1_node" style="width:100%;height:700px"></div>

这样之后依然存在问题:页面初始的宽度是多少,canvas宽度就是多少,之后不会再变化。

便尝试通过jsDOM操作,强行令canvas的宽度为100%,however too young too simple!

调整浏览器宽度发现,canvas画布的宽度是随之变化的,然而画布里面的图表内容却像被挤压在一起的馅饼,模糊扭曲了。

echarts学习笔记之图表自适应问题详解

到这里细心的同学可以发现,echart图表一旦绘制成功,内容就不会再变化。所以对于echart图表,其"响应式"应该是可以随着窗口调整不断被重新绘制,不是简单的调整宽高。

到echart官网看了Example,发现官网的实例都具有响应式功能,确实不是单纯的宽度改变,是每次调整后图表是重新绘制。猜想echart源码里应该有resize这个API,打开调试器,打开echart源码,Ctrl+F,果然找到了。

echarts学习笔记之图表自适应问题详解

再仔细查看官方文档:

echarts学习笔记之图表自适应问题详解

echart图表本身是提供了一个resize的函数的。

于是当浏览器发生resize事件的时候,让其触发echart的resize事件,重绘canvas。(也可以通过其他事件触发)

echarts学习笔记之图表自适应问题详解

附:Echarts 页面多图自适应的解决办法

网上看到有不少人使用Echarts抽象出来的框架,实现自适应的效果代码:window.onresize  = option.chart.resize() ,  这个代码基本是官网上的window.onresize = myCharts.resize();的翻版。

但在实际的应用中一个页面可能会有好几个Echarts图表,而使用window.onresize = option.chart.resize() ,加载页面图表后,页面上只有一个图表会根据浏览器的变化而自适应。如果要是页面上的图表都要自适应。则需要将resize事件叠加在不同的图上面,使用一下代码可以实现。

window.addEventListener("resize", function () {

           option.chart.resize();

         });

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript Zifa FormValid 0.1表单验证 代码打包下载
Jun 08 Javascript
JavaScript 面向对象的 私有成员和公开成员
May 13 Javascript
IE6/7/8/9不支持exec的简写方式
May 25 Javascript
jquery聚焦文本框与扩展文本框聚焦方法
Oct 12 Javascript
一个js导致的jquery失效问题的解决方法
Nov 27 Javascript
JavaScript实现定时隐藏与显示图片的方法
Aug 06 Javascript
学习JavaScript设计模式之代理模式
Jan 12 Javascript
利用Angular.js限制textarea输入的字数
Oct 20 Javascript
Bootstrap基本组件学习笔记之分页(12)
Dec 08 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
Jun 22 Javascript
微信小程序 scroll-view的使用案例代码详解
Jun 11 Javascript
vue配置型表格基于el-table拓展之table-plus组件
Apr 12 Vue.js
arcgis for js栅格图层叠加(Raster Layer)问题
Nov 22 #Javascript
在vue中添加Echarts图表的基本使用教程
Nov 22 #Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
Nov 22 #Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
Nov 22 #Javascript
vue.js模仿京东省市区三级联动的选择组件实例代码
Nov 22 #Javascript
浅谈Angular 中何时取消订阅
Nov 22 #Javascript
深入理解Angular4订阅(Subscribe)与取消
Nov 22 #Javascript
You might like
咖啡历史、消费和行业趋势
2021/03/03 咖啡文化
php简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
PHP实现获取并生成数据库字典的方法
2016/05/04 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
JavaScript 数组详解
2013/10/10 Javascript
js获取电脑分辨率的思路及操作
2013/11/22 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
2017/03/11 Javascript
js判断是否是手机页面
2017/03/17 Javascript
nodejs批量下载图片的实现方法
2017/05/19 NodeJs
删除table表格行的实例讲解
2017/09/21 Javascript
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
微信小程序数据分析之自定义分析的实现
2018/08/17 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
javascript中floor使用方法总结
2019/02/02 Javascript
详释JavaScript执行环境与执行栈
2019/04/02 Javascript
[04:42]5分钟带你了解什么是DOTA2(第一期)
2017/02/07 DOTA
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
Python实现的端口扫描功能示例
2018/04/08 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
python3 sorted 如何实现自定义排序标准
2020/03/12 Python
Python叠加矩形框图层2种方法及效果
2020/06/18 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
幼儿园中班新学期寄语
2014/01/18 职场文书
法学专业毕业生自荐信
2014/06/11 职场文书
2014年师德师风工作总结
2014/11/25 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
2015年大学元旦晚会活动策划书
2014/12/09 职场文书
安全员岗位职责
2015/02/10 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
2015年副班长工作总结
2015/05/15 职场文书
婚宴父母致辞
2015/07/27 职场文书
基于Redis位图实现用户签到功能
2021/05/08 Redis
Mysql开启外网访问
2022/05/15 MySQL