最近在做一个可视化的项目,用了百度的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可视化图在隐藏后显示不出来或是宽度出现问题的更多相关文章

  1. 【jquery隐藏、显示事件and提示callback】【淡入淡出fadeToggle】【滑入滑出slideToggle】【动画animate】【停止动画stop】

    1.jquery隐藏and显示事件 $("p").hide();      //隐藏事件$("p").hide(1000);  //1秒内缓慢隐藏$(" ...

  2. [WPF疑难] 模式窗口被隐藏后重新显示时变成了非模式窗口

    原文:[WPF疑难] 模式窗口被隐藏后重新显示时变成了非模式窗口 [WPF疑难] 模式窗口被隐藏后重新显示时变成了非模式窗口 周银辉 现象: 大家可以试试下面这个很有趣但会带来Defect的现象:当我 ...

  3. 微信小程序文字超过行后隐藏并且显示省略号

    在小程序开发过程中,经常会遇到一些数据无法在text中完全展示,所以会使用到隐藏相关文字,并在后方加上省略号(...). 只需要在对应的text中设置下面的css就可以了. overflow:hidd ...

  4. 原生JS实现全屏切换以及导航栏滑动隐藏及显示——重构前

    思路分析: 向后滚动鼠标滚轮,页面向下全屏切换:向前滚动滚轮,页面向上全屏切换.切换过程为动画效果. 第一屏时,导航栏固定在页面顶部,切换到第二屏时,导航条向左滑动隐藏.切换回第一屏时,导航栏向右滑动 ...

  5. linux如何隐藏和显示所有窗口?

    centos7 基本上就跟fedora23是一样的了, 也许它们使用的内和是一样的, fedora23使用的是4.2.3, 所以使用fedora对使用centos和redhat是有优势和好处福利的. ...

  6. CSS设置元素的隐藏和显示

    常见的三种方式 display display: none 隐藏对象 display: block 除了转换为块级元素以外,同时还有显示元素的意思 特点:隐藏之后不保留位置 visibility 值h ...

  7. 在ASP.NET Core中创建自定义端点可视化图

    在上篇文章中,我为构建自定义端点可视化图奠定了基础,正如我在第一篇文章中展示的那样.该图显示了端点路由的不同部分:文字值,参数,动词约束和产生结果的端点: 在本文中,我将展示如何通过创建一个自定义的D ...

  8. MFC 工具栏隐藏与显示

    最近在学MFC,看的是孙鑫的VC++视频,感觉还不错.在看到第九节课的时候,讲到工具栏的时候,做了个小功能:工具栏的隐藏和显示,但是有个bug就是一个悬浮的工具栏隐藏后再显示,就会变成停靠状态.这里我 ...

  9. 解决mysql无法插入中文数据及插入后显示乱码的问题

    (1)废话不多说就是使用mysql数据库的时候无法输入中文,可以输入中文后显示的又是乱码!! (2开始解决问题: 第一步:找到安装mysql的目录找到 my.ini 文件: 第二步:使用记事本打开my ...

随机推荐

  1. JS 获取浏览器的宽和高

    网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWid ...

  2. Python3基础 list 使用for循环 删除列表中的重复项

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  3. Python3基础 str lstrip 去掉字符串左边的空格

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  4. C#面试题集锦

    1.貌似最常用的是  值类型和引用类型,还有 装箱和 http://www.cnblogs.com/Autumoon/archive/2008/08/18/1270685.html http://ww ...

  5. BZOJ5281: [Usaco2018 Open]Talent Show 01分数规划+01背包

    Description FarmerJohn要带着他的N头奶牛,方便起见编号为1…N,到农业展览会上去,参加每年的达牛秀!他的第i头奶牛重 量为wi,才艺水平为ti,两者都是整数.在到达时,Farme ...

  6. Python 逗号的几种作用

    转自http://blog.csdn.net/liuzx32/article/details/7831247 最近研究Python  遇到个逗号的问题 一直没弄明白 今天总算搞清楚了 1.逗号在参数传 ...

  7. css布局一屏幕的自适应高度

    css ;;list-style: none;} .top{height: 100px;background-color:orange;} .max{;background-color:skyblue ...

  8. gulp介绍及常用插件

    前端构建工具gulpjs的使用介绍及技巧 gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简单,学习起来很容易,而且gulpjs使用的是nod ...

  9. 【Android实验】 UI设计-ListView

    目录 实验目的 实验要求 实验内容 实现效果 实验代码 实验总结 实验目的 学习使用ListView 学习使用menu 实验要求 实现一个列表,其中显示班级学号姓名,提供添加功能,如需要删去某一项,长 ...

  10. [转]VS“当前上下文中不存在名称“ViewBag”解决方法

    原文链接:<VS"当前上下文中不存在名称"ViewBag",当前上下文不存在名称"model""-已解决> 自己的项目出现了错误 ...