echatrs可视化图在隐藏后显示不出来或是宽度出现问题
最近在做一个可视化的项目,用了百度的ECharts.js作为可视化的视图框架,echarts的实例很多,基本能满足项目的需求,而且文档也相对完整、清晰,是个很不错的前端可视化框架。
我们的项目是使用bootstrap+echatrs完成的,前阵子在做可视化页面时这样一个问题。就是echarts图在第一次加载时没有问题,之后标签页切换隐藏,再显示就看不见了。
这是图形初始化完毕,没有任何问题。
之后我点了第二个标签,第一页图形隐藏,第二页显示,依旧没有任何问题。
然后我们再点回第一个便签页。
咦?我的图形呢?
开始我判断可能是选项卡可能有问题,后来也没找到选项卡的问题,然后就放着了。
昨天我又遇到一个问题。我想通过一个下拉框控制框内显示的图形。于是我正常的写两个图形在同一个框内,然后隐藏一个,等下来选择后再切换到另外一个,很简单的需求。
于是开始是这样的。
很好,很完美。然后我点击下拉框,切换到目的IP,然后。。。。
咦?哪里出错了?又是一脸懵逼。。。。。。。
我依旧是找了很久切换的问题,依旧没找到。
结果今天又遇到一个问题。过程是从一个图形点击跳转到另外一个图形,第二个图形是隐藏的echarts图。结果是这样的。。
怎么这么小,宽度为什么没有自适应?看看源码。。。
怎么是100px?没有设置过啊?
其实这时候我才突然意识到这三个问题实际都是一个问题造成的。就是echarts图形在隐藏变为显示后,无法获取clientWidth造成的。而最后一个是 parseInt(stl.width, 10)) 将width: 100%;转为100,所以计算出的图表宽度为100px。
也就是图形在显示时不知道宽度是多少,然后就变成了宽度为0,不显示。或是宽度出现问题。知道了问题的根源那我就想办法给他一个宽度就行了。然后就这样
var container = document.getElementById('concurrenceChart');
var resizeContainer = function () {
container.style.width = window.innerWidth+'px';
container.style.height = window.innerHeight+'px';
};
resizeContainer(); var myChart = echarts.init(container);
之后问题就解决了。
还有一种方法可以解决这个问题,就是在切换之后再调用一下char.resize()方法,重新设置一下再生成图形。
/*切换*/
$("#sourceOrgoal").change(function(){
console.log($(this).val());
var val = $(this).val();
if(val ==="goal"){
$("#statistics_gIP").show();
$("#statistics_DIP").hide();
GTrafficChart.resize();//关键步骤
GTrafficChart.setOption(GTrafficOption,true);
}else{
$("#statistics_gIP").hide();
$("#statistics_DIP").show();
}
});
当然,这可能还有更好的解决的方法,欢迎留言交流。如果对问题还有更深层次的理解,欢迎留言探讨!!
echatrs可视化图在隐藏后显示不出来或是宽度出现问题的更多相关文章
- 【jquery隐藏、显示事件and提示callback】【淡入淡出fadeToggle】【滑入滑出slideToggle】【动画animate】【停止动画stop】
1.jquery隐藏and显示事件 $("p").hide(); //隐藏事件$("p").hide(1000); //1秒内缓慢隐藏$(" ...
- [WPF疑难] 模式窗口被隐藏后重新显示时变成了非模式窗口
原文:[WPF疑难] 模式窗口被隐藏后重新显示时变成了非模式窗口 [WPF疑难] 模式窗口被隐藏后重新显示时变成了非模式窗口 周银辉 现象: 大家可以试试下面这个很有趣但会带来Defect的现象:当我 ...
- 微信小程序文字超过行后隐藏并且显示省略号
在小程序开发过程中,经常会遇到一些数据无法在text中完全展示,所以会使用到隐藏相关文字,并在后方加上省略号(...). 只需要在对应的text中设置下面的css就可以了. overflow:hidd ...
- 原生JS实现全屏切换以及导航栏滑动隐藏及显示——重构前
思路分析: 向后滚动鼠标滚轮,页面向下全屏切换:向前滚动滚轮,页面向上全屏切换.切换过程为动画效果. 第一屏时,导航栏固定在页面顶部,切换到第二屏时,导航条向左滑动隐藏.切换回第一屏时,导航栏向右滑动 ...
- linux如何隐藏和显示所有窗口?
centos7 基本上就跟fedora23是一样的了, 也许它们使用的内和是一样的, fedora23使用的是4.2.3, 所以使用fedora对使用centos和redhat是有优势和好处福利的. ...
- CSS设置元素的隐藏和显示
常见的三种方式 display display: none 隐藏对象 display: block 除了转换为块级元素以外,同时还有显示元素的意思 特点:隐藏之后不保留位置 visibility 值h ...
- 在ASP.NET Core中创建自定义端点可视化图
在上篇文章中,我为构建自定义端点可视化图奠定了基础,正如我在第一篇文章中展示的那样.该图显示了端点路由的不同部分:文字值,参数,动词约束和产生结果的端点: 在本文中,我将展示如何通过创建一个自定义的D ...
- MFC 工具栏隐藏与显示
最近在学MFC,看的是孙鑫的VC++视频,感觉还不错.在看到第九节课的时候,讲到工具栏的时候,做了个小功能:工具栏的隐藏和显示,但是有个bug就是一个悬浮的工具栏隐藏后再显示,就会变成停靠状态.这里我 ...
- 解决mysql无法插入中文数据及插入后显示乱码的问题
(1)废话不多说就是使用mysql数据库的时候无法输入中文,可以输入中文后显示的又是乱码!! (2开始解决问题: 第一步:找到安装mysql的目录找到 my.ini 文件: 第二步:使用记事本打开my ...
随机推荐
- 10:Python2与Python3比较
1.print 函数 1. print语句没有了,取而代之的是print()函数. Python 2.6与Python 2.7部分地支持这种形式的print语法. 2.Unicode 1. 在pyt ...
- ubuntu下交叉编译mono
环境:ubuntu16.04 wget download.mono-project.com/sources/mono/mono-4.8.1.0.tar.bz2 配置: CC=arm-linux-you ...
- HDU 6171 Admiral(双向BFS+队列)题解
思路: 最大步骤有20,直接BFS会超时. 因为知道开始情况和结果所以可以用双向BFS,每个BFS规定最大步骤为10,这样相加肯定小于20.这里要保存每个状态搜索到的最小步骤,用Hash储存.当发现现 ...
- Type.Missing和System.Reflection.Missing.Value
Type.Missing https://msdn.microsoft.com/en-us/library/system.type.missing(v=vs.110).aspx Missing.Val ...
- 51NOD 1069 Nim游戏
1069 Nim游戏 有N堆石子.A B两个人轮流拿,A先拿.每次只能从一堆中取若干个,可将一堆全取走,但不可不取,拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误.给出 ...
- Nginx 负载均衡的几种方式
如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...
- 新增html5标签 例如input的很多属性
<meter> 标签定义度量衡.仅用于已知最大和最小值的度量. contenteditable="true"> 规定可编辑的内容. <output> ...
- python 进程队列
#_*_coding:utf-8_*_ from multiprocessing import Process,Queue import os,time def f(q,n): q.put([n,'h ...
- Jmeter 中多线程并发和循环控制器
今天遇到一个场景, 给一个手机号发送短信验证码,通过正确输入短信验证码即登录并获得token,进行其他操作. 短信验证码是4位,即9999个组合, 接口没有对验证次数做校验,所以可以一直一直尝试通过验 ...
- RobotFramework安装指南
Python下载 https://www.python.org/downloads Setuptools下载 https://pypi.python.org/pypi/setuptools 用原装各种 ...