echats图表大小自适应

        我的实现自适应的办法是用window.onresize监听视口的大小,变化的时候就调用chartssize()方法,在这个方法中使用getStyle(container, 'width(height)').width(height)把图表外层的div的宽高赋给图表,这样,我们只需控制外层div的自适应就好了。比如我的代码中外层是id="chartBox"的div,整体的布局通过vw,vh来控制自适应,这样视口变小时,id="chartBox"的div就会等比缩小,html会自己计算这个div的宽高,并将其赋给图表。以此让图表的大小也跟着改变。

template部分:

<div class="" id="chartBox">

        <div id="container" style="width:150px;height: 150px"></div>

</div>

script部分:

drawChart() {
      let myChart = this.$echarts.init(document.getElementById("container"));
      var option;
      option = {
        title: {
          text: "Referer of a Website",
          subtext: "Fake Data",
          left: "center",
        },
        tooltip: {
          trigger: "item",
        },
        legend: {
          orient: "vertical",
          left: "left",
        },
        series: [
          {
            name: "Access From",
            type: "pie",
            radius: "50%",
            data: [
              { value: 1048, name: "Search Engine" },
              { value: 735, name: "Direct" },
              { value: 580, name: "Email" },
              { value: 484, name: "Union Ads" },
              { value: 300, name: "Video Ads" },
            ],
            emphasis: {
              itemStyle: {
                shadowBlur: 10,
                shadowOffsetX: 0,
                shadowColor: "rgba(0, 0, 0, 0.5)",
              },
            },
          },
        ],
      };
      myChart.setOption(option);
      window.addEventListener('resize', myChart.resize);
    },
    chartssize (container,charts) {
      console.log(container)
      function getStyle(el, name) {
        if (window.getComputedStyle) {
          return window.getComputedStyle(el, null);
        } else {
          return el.currentStyle;
        }
      }
      var wi = getStyle(container, 'width').width;
      var hi = getStyle(container, 'height').height;
      charts.style.width = wi
      charts.style.height = hi
    }
  },
  mounted() {
    this.drawChart();
    window.onresize = () => {
        return (() => {
          this.chartssize(document.getElementById("chartBox"),document.getElementById("container"));
        })()
    }
  },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值