ECharts-当ECharts遇到ResizeObserver

本文探讨了前端面对不同分辨率时如何使用ECharts进行适配,提出了两种策略:监听窗口变化和直接监听图表父元素。通过在Vue中实现这两种方法,特别是利用ResizeObserver监听元素尺寸变化,实现实时图表调整,确保在各种屏幕尺寸下图表的展示效果。
摘要由CSDN通过智能技术生成

一、当ECharts遇到ResizeObserver
1. 需求背景

前端很容易遇到分辨率适配的问题,一般pc的屏幕的分辨率有1366*7681440*9001680*10501920*1080等,在不同的屏幕下,页面中的图表,需要根据屏幕的分辨率进行调整。

2. 相关api支持

api支持: https://echarts.apache.org/zh/api.html#echartsInstance
在这里插入图片描述
我们可以看到:ECharts官网提供了api的支持。

思路一: 监听可视窗口的变化,常常用到的是window对象下的onresize函数,然后获取图表父元素的宽高,最后触发官方提供的resize函数,以达到在不同的分辨率下,图表的适配。
在这里插入图片描述
思路二: 监听图表父元素的宽高变化。直接监听图表父元素的宽高变化,再去触发官方提供的resize函数,以达到在不同的分辨率下,图表的适配。
在这里插入图片描述

3. 具体实现【基于vue实现】

思路一:

  • 在mounted生命周期的函数中,监听onresize函数

    window.onresize = () => {
      return (() => {
        this.screenWidth = document.documentElement.clientWidth
      })()
    }
    
  • 在data函数中定义一个屏幕宽度/高度的参数

    data() {
      return {
        screenWidth: 0
      }
    }
    
  • 在watch中监听宽度/高度的变化

    watch: {
      screenWidth: {
        handler() {
          // 这边需要设置一个延迟,主要还是页面渲染太快,导致offsetWidth获取失败【缺点】
          setTimeout(() => {
            const width = this.$refs.xxx.offsetWidth;
            // 触发resize方法
            this.xxxChart.resize({width, height: "auto"})
          }, 500)
        }
      }
    }
    

思路二:

  • 定义一个resizeChart的方法

    resizeChart(){
      const resizeObserver = new ResizeObserver(() => {
        const width = this.$refs.xxx?.offsetWidth
        this.xxxChart.resize({ width, height: "auto" })
      });
    	resizeObserver.observe(this.$refs.xxx)
    }
    
  • 在mounted生命周期的函数中,调用

    mounted() {
      this.resizeChart();
    },
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值