tab分页中Echart图片显示不全

问题描述

网页中十分常见的tab分页,通过切换头部tab,控制主体内容的显示与隐藏。如下图所示,有图表的是最后一个tab分页,在切换到该分页时,其中的图表没有占满一行,蜷缩在页面左边。


Echarts图表显示问题

Echarts展示一张图表时,承载其的html容器一定要设置好宽度,所以想着是不是页面结构问题,Echarts图表容器的宽度设置出错。检查发现,肯定是设置了宽高的。


图表页面结构与样式

缘由追查

查看图表容器,发现容器元素宽度被设置为100px了;说明是Echart源码进行了某些处理。



Echarts3源码中获取容器宽高的函数如下:

_getSize: function (whIdx) {
    var opts = this._opts;
    var wh = ['width', 'height'][whIdx];
    var cwh = ['clientWidth', 'clientHeight'][whIdx];
    var plt = ['paddingLeft', 'paddingTop'][whIdx];
    var prb = ['paddingRight', 'paddingBottom'][whIdx];

    if (opts[wh] != null && opts[wh] !== 'auto') {
      return parseFloat(opts[wh]);
    }

    var root = this.root; // IE8 does not support getComputedStyle, but it use VML.

    var stl = document.defaultView.getComputedStyle(root);
    return (root[cwh] || parseInt10(stl[wh]) || parseInt10(root.style[wh])) - (parseInt10(stl[plt]) || 0) - (parseInt10(stl[prb]) || 0) | 0;
  },

这才发现问题所在,获取图表宽度时,由于图表所在的分页display:none,所以root.clientWidth获取失败;

parseInt10(stl[wh]) => parseInt(document.defaultView.getComputedStyle[width],10) =>  parseInt('100%',10)  => 100

这样也就解释为什么我们的图表宽度都是100px了。

解决方案

方案1

既然获取不到clientWidth的值,那么我们就在初始化图表对象前,手动设置容器root元素的宽度

$('.chart-block').css('width', $('.header-tabs').width());  // echarts.init之前
var playTimesChart = echarts.init($('.play-times-chart').get(0)),
// $('.header-tabs').width()  =>  图表元素父级宽度
方案2

在切换到图表分页时,让初始化后的图表重新resize下

// tab页切换事件函数中
playTimesChart.resize();  // 改变图表尺寸,在容器大小发生改变时需要手动调用。

调整后,图表恢复正常显示


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,292评论 4 61
  • 都说”给我一个Path,我还你一个世界“一直都被贝塞尔曲线面纱挡住没有勇敢的去揭开,看到别人玩的贝塞尔曲线 玩的那...
    明朗__阅读 4,839评论 0 22
  • 2017年最重要的一天 罗胖在2017年跨年演讲上,用这样一个问题作为开头: 对你来说,2017年最重要的一天是哪...
    毛豆爸的破冰之旅阅读 1,833评论 4 4
  • 在凉爽的秋风中,我们迎来了正式开学的第一天。老师,家长,学生怀着激动心情早早来到学校。瞧,美丽的校园在欢迎...
    halona027阅读 3,150评论 0 3
  • 意懿 2018-02-23 22:01 · 字数 644 · 阅读 4 · 日记本 “仍然没有 遇到 那位跟我绝配...
    意懿阅读 5,401评论 0 0