ECharts3中的图表大小自适应

来源:互联网 发布:福建知天气 编辑:程序博客网 时间:2024/05/16 05:15

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

  • 添加window.onresize=myCharts.resize在setOption之后

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

var worldMapContainer = document.getElementById('WorldMap');//用于使chart自适应高度和宽度,通过窗体高宽计算容器高宽var resizeWorldMapContainer = function () {    worldMapContainer.style.width = window.innerWidth+'px';    worldMapContainer.style.height = window.innerHeight+'px';};//设置容器高宽resizeWorldMapContainer();// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(worldMapContainer);// 指定图表的配置项和数据var option = {    title: {        text: 'ECharts 入门示例'    },    tooltip: {},    legend: {        data:['销量'],        height: worldMapContainer.style.height,        width: worldMapContainer.style.width    },    xAxis: {        data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]    },    yAxis: {},    series: [{        name: '销量',        type: 'bar',        data: [5, 20, 36, 10, 10, 20]    }]};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);//用于使chart自适应高度和宽度window.onresize = function () {    //重置容器高宽    resizeWorldMapContainer();    myChart.resize();};



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


2017.9.26更新

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



原创粉丝点击