echarts 随屏幕大小改变大小(resize)

echarts 随屏幕大小改变大小(resize)

  • echarts多个图表大小随屏幕的大小改变自适应,Echarts 多图表自适应窗口大小,echarts随页面大小变化而变化;

页面单个 echarts

  • 当页面只有一个图表的时候直接用
    window.onresize = myChart.resize

示例

可直接复制粘贴

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>第一个 ECharts 实例</title>
    <!-- 引入 echarts.js -->
    <script src="https://cdn.staticfile.org/echarts/5.0.1/echarts.min.js"></script>
</head>

<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 100%;height:500px;"></div>
    <script type="text/javascript">
        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);
        window.onresize = myChart.resize;
    </script>
</body>

</html>
  • 宽度需要设置为百分比,高度自适应亦然。

页面有多个 echarts

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>第一个 ECharts 实例</title>
    <!-- 引入 echarts.js -->
    <script src="https://cdn.staticfile.org/echarts/5.0.1/echarts.min.js"></script>
</head>

<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 100%;height:500px;"></div>
    <div id="mainA" style="width: 100%;height:500px;"></div>
    <div id="mainB" style="width: 100%;height:500px;"></div>
    <script type="text/javascript">
        var myChart = echarts.init(document.getElementById('main'));
        var myChartA = echarts.init(document.getElementById('mainA'));
        var myChartB = echarts.init(document.getElementById('mainB'));

        // 指定图表的配置项和数据
        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);
        myChartA.setOption(option);
        myChartB.setOption(option);

        window.addEventListener("resize", function () {
            myChart.resize();
            myChartA.resize();
            myChartB.resize();
        });
        /* 或者
        *    window.onresize = function(){
        *       myChart.resize();
        *       myChartA.resize();
        *       myChartB.resize();
        *   }
        /
    </script>
</body>

</html>

vue 组件化开发

  • 如果把绑定放在父页面的 mounted 里面会导致找不到子组件的 dom元素,导致自适应失效
  • this.$nextTick(() => {})
  • 用 nextTick 函数,等dom全部加载好再绑定
  • 然后可以在组件上绑定 ref,将子组件的echarts绑定到data中方便父组件访问
上一篇:std::vector.resize()函数修改vector大小和新增元素,不影响已有元素


下一篇:vue 对echart 切换时,容器宽度不是100%