解决echarts图表随窗口宽度变化而改变图表的大小


前言

很多同学在使用echarts时遇到了浏览器窗口大小发生变化时,图表大小没有自适应窗口的宽度,下面我将对比演示随着窗口大小变化,echarts图表也发生变化的例子


一、演示前后对比效果

没有设置宽度自适应的效果
在这里插入图片描述
设置了宽度自适应效果
在这里插入图片描述

二、解決方法

1.在代码结尾加上监听方法

代码如下(示例):

// 为窗口加上宽度变化事件,当宽高发生改变时,调用echarts的resize()方法,调整图表尺寸
  window.addEventListener('resize', function () {
    myChart.resize();
  })

2.示例

前端代码

<div class="char" style="height: 100vh;width: 100vw"></div>

js代码

import * as echarts from 'echarts';
var myChart;
var option;
function initShopYearAmount(data) {
  // 先从dom中获取已经创建的echarts实例,避免过度初始化导致报错
  myChart = echarts.getInstanceByDom(document.getElementById('char'));
  if (myChart == undefined) {
    // 初始化echarts
    myChart = echarts.init(document.getElementById('char'));
  }

  option = {
    title: {
      text: '订单总金额(元)',
      left: 'center',
      top: '3%'
    },
    grid: {
      left: '3%',
      right: '4%',
      bottom: '5%',
      top: '15%',
      containLabel: true
    },
    xAxis: {
      type: 'category',
      data: [1,2,3,4,5],
      axisLabel: {
        fontSize: 16,
        color: '#333333'
      }
    },
    yAxis: {
      type: 'value',
      axisLabel: {
        fontSize: 16,
        color: '#999999'
      },
      splitLine: {
        show: true,
        lineStyle: {
          type: 'dashed'
        }
      }
    },
    series: [
      {
        name: '销售额(元)',
        data: [0,100,200,20,5],
        type: 'bar',
        color: '#FF7519',
        barWidth: 28,
        label: {
          show: true,
          color: '#FF7519',
          position: 'top',
          fontSize: 18
        }
      }
    ]
  };

  option && myChart.setOption(option);
  // 为窗口加上宽度变化事件,当宽高发生改变时,调用echarts的resize()方法,调整图表尺寸
  window.addEventListener('resize', function () {
    myChart.resize();
  })
}

三、总结

以上解决方法都是从官方文档中可以找出,如下图:
在这里插入图片描述
在遇到类似问题时可以搜索官方文档寻找问题的解决方案
在这里插入图片描述

扩展问题

1.在使用echart时,需要查看某个数据的图表,第一次打开弹窗时图表还显示,第二次页面就变空白了。
例如我要点击查看某个业务员的业绩,刚打开时可以显示,点击多次页面就显示空白了
在这里插入图片描述
原因是页面的echarts实例没有被销毁,这时候你又去初始化它,才会导致这样的
先看一下官方的这个方法
在这里插入图片描述
在我们关闭窗口时调用一下销毁实例,第二次打开就可以正常显示出内容了

myChar.dispose()
  • 9
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HHUFU..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值