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的console.log()用法小结
May 31 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
Oct 23 Javascript
JavaScript获取某年某月的最后一天附截图
Jun 23 Javascript
移动设备web开发首选框架:zeptojs介绍
Jan 29 Javascript
继续学习javascript闭包
Dec 03 Javascript
Angular中ng-options下拉数据默认值的设定方法
Jun 21 Javascript
使用vue-cli编写vue插件的方法
Feb 26 Javascript
详解CommonJS和ES6模块循环加载处理的区别
Dec 26 Javascript
JS实现的对象去重功能示例
Jun 04 Javascript
WEEX环境搭建与入门详解
Oct 16 Javascript
Node.js中文件系统fs模块的使用及常用接口
Mar 06 Javascript
vue中的计算属性和侦听属性
Nov 06 Javascript
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
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
Yii学习总结之数据访问对象 (DAO)
2015/02/22 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
Prototype String对象 学习
2009/07/19 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
JS实现新浪博客左侧的Blog管理菜单效果代码
2015/10/22 Javascript
Fullpage.js固定导航栏-实现定位导航栏
2016/03/17 Javascript
jQuery图片渐变特效的简单实现
2016/06/25 Javascript
适用于手机端的jQuery图片滑块动画
2016/12/09 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
2017/03/08 Javascript
Vue2.0使用过程常见的一些问题总结学习
2017/04/10 Javascript
Vue中img的src属性绑定与static文件夹实例
2017/05/18 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
解决vue.js中settimeout遇到的问题(时间参数短效果不稳定)
2020/07/21 Javascript
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
tensorflow 打印内存中的变量方法
2018/07/30 Python
python生成器与迭代器详解
2019/01/01 Python
Python如何省略括号方法详解
2020/03/21 Python
您的健身减肥和健康饮食专家:vitafy
2017/06/06 全球购物
顶丰TOPPIK台湾官网:增发纤维假发,告别秃发困扰
2018/06/13 全球购物
英国外籍人士的在线超市:British Corner Shop
2019/06/03 全球购物
DC Shoes俄罗斯官网:美国滑板鞋和服饰品牌
2020/08/19 全球购物
数控专业应届生求职信
2013/11/27 职场文书
求职自荐信
2013/12/14 职场文书
信用卡工作证明模板
2014/09/14 职场文书
2016七夕情人节寄语
2015/12/04 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书
PHP新手指南
2021/04/01 PHP
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android