美文网首页
如何让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