设置echarts图表自适应

        echarts官网中有resize这个函数帮助我们实现图表的自适应,我们只需要监听页面窗口的变化,然后使用resize这个函数就可以了。
在这里插入图片描述
这个时候,图表会自动变化,但是有时候,除了图表,图表中的其他元素也需要根据自动变化,如图例中的字体,图中的字体什么的,这个时候,使用resize图表中的字体并不会相应地进行变化,幸运的是,网上有解决方案,echarts大屏字体自适应的方法步骤

通过这个,我们可以让图表在窗口变化时,不仅图表本身有变化,图表中的字体也会有变化,相关的代码如下

this.myChart = echarts.init(document.getElementById('main'));
    this.setOptions();
    window.onresize = () => {
      this.setOptions();
      this.myChart.resize();
  }; 
    
getOptions = () => {
     const options = {
      tooltip: {
        trigger: 'item',
        formatter: '{c}',
      },
      color: ['#F04864', '#1890FF', '#FACC14', '#4DCB73'],
      legend: {
        orient: 'vertical',
        top: 'middle',
        left: '45%',
        x: 'left',
        icon: 'circle',
        itemGap: 15,
        itemWidth: this.fontSize(0.1),
        itemHeight: this.fontSize(0.1),
        formatter(name) {
          return `{a|${name}}`;
        },
        textStyle: {
          // rich放在textStyle里面
          rich: {
            a: {
              // width: 50,
              fontSize: this.fontSize(0.15),
              padding: 0,
              color: '#fff',
            },
            b: {
              color: '#fff',
              // width: 50,
              fontSize: this.fontSize(0.15),
              padding: 0,
            },
            c: {
              color: '#fff',
            },
          },
        },
        data: ['测试1','测试1','测试1','测试1',],
      },
      title: {
        text: stat.total,
        subtext: formatMessage({ id: '总条数' }),
        left: '24%',
        top: '40%',
        textAlign: 'center',
        textStyle: {
          color: '#fff',
          fontSize: this.fontSize(0.23),
        },
        subtextStyle: {
          color: '#fff',
          fontSize: this.fontSize(0.15),
        },
      },
      series: [
        {
          emphasis: {
            show: false,
          },
          type: 'pie',
          center: ['25%', '50%'],
          radius: ['40%', '55%'],
          avoidLabelOverlap: false,
          label: {
            normal: {
              position: 'inner',
              show: false,
            },
          },
          labelLine: {
            normal: {
              show: false,
            },
          },
          data:[
          	{
          		name:'测试1',
          		value:34
          	},
          	{
          		name:'测试2',
          		value:345
          	},
          	{
          		name:'测试4',
          		value:36
          	},
          	{
          		name:'测试3',
          		value:34
          	}
          ],
        },
      ],
    };

    return options;
  };
  
    setOptions = () => {
    const options = this.getOptions();
    // 绘制图表
    this.myChart.setOption(options);
  };
  
    fontSize = res => {
    const clientWidth =
      window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
    if (!clientWidth) return '16px';
    const fontSize = 100 * (clientWidth / 1920);
    return res * fontSize;
  };
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值