美文网首页
如何让echarts图表随着浏览器窗口的大小变化而变化

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

作者: ymin_5b12 | 来源:发表于2018-12-27 15:09 被阅读0次

    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();
    });
    

    相关文章

      网友评论

          本文标题:如何让echarts图表随着浏览器窗口的大小变化而变化

          本文链接:https://www.haomeiwen.com/subject/odvrlqtx.html