echarts v5版本新特性。让图表进行自适应/响应式排列。

最近在做公司项目时,UI图要求饼图在大屏幕2X2排列,在小屏幕1X4排列。最开始想到的方法是用一个变量判断是否是小屏幕,在resize事件里改变它的值,这种方法实现有个弊端就是要刷新才起的了效果。
于是我想去 官方文档 看看有没有解决方案,还真让我找到了。

echarts版本必须在 5.0.0 以上,否则会报错!

主要实现配置的配置项:

在options里面设置media。第一项里设置query: { minAspectRatio: 1}
minAspectRatio表示最小纵横比,也就是屏幕的宽高比。

下面贴出配置项:

const option = {
        legend: {},
        tooltip: {},
        dataset: {
          source: [
            ['product', '2012', '2013', '2014', '2015', '2016', '2017'],
            ['Milk Tea', 86.5, 92.1, 85.7, 83.1, 73.4, 55.1],
            ['Matcha Latte', 41.1, 30.4, 65.1, 53.3, 83.8, 98.7],
            ['Cheese Cocoa', 24.1, 67.2, 79.5, 86.4, 65.2, 82.5],
            ['Walnut Brownie', 55.2, 67.1, 69.2, 72.4, 53.9, 39.1]
          ]
        },
        series: [
          {
            type: 'pie',
            radius: '20%',
            center: ['25%', '30%']
            // No encode specified, by default, it is '2012'.
          }, {
            type: 'pie',
            radius: '20%',
            center: ['75%', '30%'],
            encode: {
              itemName: 'product',
              value: '2013'
            }
          }, {
            type: 'pie',
            radius: '20%',
            center: ['25%', '75%'],
            encode: {
              itemName: 'product',
              value: '2014'
            }
          }, {
            type: 'pie',
            radius: '20%',
            center: ['75%', '75%'],
            encode: {
              itemName: 'product',
              value: '2015'
            }
          }],
          // Optional. Only for responsive layout:
        media: [
        {
          query: { minAspectRatio: 1 },
          option: { // 满足最小宽高比1
            series: [
              { radius: '40%', center: ['20%', '50%'] },
              { radius: '40%', center: ['40%', '50%'] },
              { radius: '40%', center: ['60%', '50%'] },
              { radius: '40%', center: ['80%', '50%'] }
            ]
          }
        }, {
          option: { // 不满足最小宽高比1
            series: [
              { radius: '20%', center: ['25%', '30%'] },
              { radius: '20%', center: ['75%', '30%'] },
              { radius: '20%', center: ['25%', '75%'] },
              { radius: '20%', center: ['75%', '75%'] }
            ]
          }
        }]
      }

实现结果展示

  1. 大屏下:
    在这里插入图片描述
  2. 小屏下:
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值