ECharts3中的图表大小自适应

时间:2024-12-19 22:07:04

最近在写一个地图类的应用,用的是echarts的图表,然而一上来就一脸懵逼,如果父级容器的height/width属性设置为百分比的形式,那么echarts就会warning,且不能正常的生成图表。所以div容器的高度宽度必须指定为px,这设计不知道是为啥。
google到的解决方案如下

  • 添加window.οnresize=在setOption之后

我添加后图表的高度被压缩到了min-height,很奇怪,于是自己采用了如下解决方案,直接贴代码了。

var worldMapContainer = ('WorldMap');

//用于使chart自适应高度和宽度,通过窗体高宽计算容器高宽
var resizeWorldMapContainer = function () {
     = +'px';
     = +'px';
};
//设置容器高宽
resizeWorldMapContainer();
// 基于准备好的dom,初始化echarts实例
var myChart = (worldMapContainer);

// 指定图表的配置项和数据
var option = {
    title: {
        text: 'ECharts 入门示例'
    },
    tooltip: {},
    legend: {
        data:['销量'],
        height: ,
        width: 
    },
    xAxis: {
        data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
    },
    yAxis: {},
    series: [{
        name: '销量',
        type: 'bar',
        data: [5, 20, 36, 10, 10, 20]
    }]
};

// 使用刚指定的配置项和数据显示图表。
(option);

//用于使chart自适应高度和宽度
 = function () {
    //重置容器高宽
    resizeWorldMapContainer();
    ();
};

此时,worldMapContainer的高宽已经无所谓了,因为我们已经在js中设定了div容器高宽。
这个方法可以在使ECharts在高度和宽度上均自适应,如若遇到什么坑,之后再补充。


2017-9-26更新

  • 如果是需要图表跟随容器自适应的话,将上述替换为容器元素的即可。其根本原理就是通过JavaScript来刷新图表宽高而非直接css自适应(因为ECharts不支持)

2018-5-27更新
很高兴能帮到大家,博主2016年下半年在准备考研所以就没再更新了,随后就用OneNote记笔记了。不过现在博客也要继续更新了,大家有什么问题可以直接评论,或者发邮件到blog@