如何让echarts图表随着浏览器窗口的大小变化而变化

1.当页面之中只有一个echarts图表的时候
如下,首先简单设置一个宽度和高度都为浏览器大小的50%的柱状图

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!-- 引入 echarts.js -->
    <script src="echarts.min.js"></script>
  <style>
        *{
            margin:0px;
            padding: 0px;
        }
        body,html{
        width:100%;
        height:100%;
        }
    </style>
</head>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 50%;height:50%;"></div>
    <script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('main'));

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

        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    </script>
</body>
</html>

此时实现图表缩放只需添加以下代码

window.addEventListener("resize", function () {
    myChart.resize();
});

2.如果页面中有多个echarts图表并都写在了一个JS中的时候,此时需监听浏览器窗口的变化,为每一个echarts实例添加resize()方法。

window.addEventListener("resize", function () {
    myChart1.resize();
    myChart2.resize();
    myChart3.resize();
    myChart4.resize();
});

3.如果页面中有多个echarts图表,并且每个图表都写在了不同JS里面,通过外部引用的方式,引入到页面中的。
例如:test1.js中这样写

  var myChart = echarts.init(document.getElementById('main1'));
    ...此处省略
  myChart.setOption(option);
 window.addEventListener("resize",function(){   
    myChart.resize();
});

test2.js中这样写

  var myChart = echarts.init(document.getElementById('main2'));
    ...此处省略
  myChart.setOption(option);
 window.addEventListener("resize",function(){   
    myChart.resize();
});

也就是说不同JS中的Echarts实例名字相同,这样看似没毛病,因为在不同JS中它们互不影响啊,但事实是只有页面上最后一个JS引入的Echarts图表的大小能够随浏览器的大小变化而变化。
解决此种情况的方法很简单,只需要在不同的JS中创建的Echarts实例名称不同就行了。
例如:将test2.js中改成

  var myChartTwo = echarts.init(document.getElementById('main2'));
    ...此处省略
  myChartTwo.setOption(option);
 window.addEventListener("resize",function(){   
    myChartTwo.resize();
});
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容