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比较文档位置
Apr 08 Javascript
jquery 提示信息显示后自动消失的具体实现
Dec 18 Javascript
微信分享的标题、缩略图、连接及描述设置方法
Oct 14 Javascript
JS显示下拉列表框内全部元素的方法
Mar 31 Javascript
js改变html的原有内容实现方法
Oct 05 Javascript
angularjs过滤器--filter与ng-repeat配合有奇效
Apr 20 Javascript
javascript流程控制语句集合
Sep 18 Javascript
高性能的javascript之加载顺序与执行原理篇
Jan 14 Javascript
浅析Angular19 自定义表单控件
Jan 31 Javascript
vue.js实现格式化时间并每秒更新显示功能示例
Jul 07 Javascript
详解微信小程序「渲染层网络层错误」的解决方法
Jan 06 Javascript
Ajax是什么?Ajax高级用法之Axios技术
Apr 21 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
制作美丽的拉花
2021/03/03 冲泡冲煮
Codeigniter的dom类用法实例
2015/06/26 PHP
PHP7正式版测试,性能惊艳!
2015/12/08 PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
2016/10/28 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
jQuery动态添加 input type=file的实现代码
2012/06/14 Javascript
ajax与302响应代码测试
2013/10/23 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
详解JavaScript中shift()方法的使用
2015/06/09 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
详解Javascript模板引擎mustache.js
2016/01/20 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
2016/07/25 Javascript
jQuery查找节点方法完整实例
2016/09/13 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
微信小程序的tab选项卡的实现效果
2019/05/15 Javascript
vue router动态路由设置参数可选问题
2019/08/21 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
python实现猜数字游戏
2020/03/25 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
Python爬虫破解登陆哔哩哔哩的方法
2020/11/17 Python
Python可以用来做什么
2020/11/23 Python
HTML5单页面手势滑屏切换原理分析
2017/07/10 HTML / CSS
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
新媒传信软件测试面试题
2013/02/24 面试题
社团2014年植树节活动总结
2014/03/11 职场文书
剪彩仪式主持词
2014/03/19 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
万里长城导游词
2015/01/30 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
安全温馨提示语大全
2015/07/14 职场文书
升学宴家长致辞
2015/07/27 职场文书
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python