echarts大小自适应,width=100%实际100px的问题

1. echarts大小自适应

1. 首先要在data中定义一个为null的空值,用来保存你实例化图表的对象

  data() {
    return {
      // echarts图表
      myCharts: null,
      // 获取网页可见区域宽
      screenWidth: document.body.clientWidth,
    };
  },

2. 在mounted生命周期中定义新的onresize函数,获取当前的窗口大小,并将值赋值给data中定义的screenWidth,这样在watch中就可以监听到屏幕宽度的变化

  mounted() {
    window.onresize = () => {
      return (() => {
        window.screenWidth = document.body.clientWidth;
        this.screenWidth = window.screenWidth;
      })();
    };
  },

3. 在watch中监听浏览器屏幕宽度的变化,改变时,使echarts图表resize

也可以在进行其他操作时,重新改变图形的大小

  watch: {
    '$store.state.app.sidebar.opened'() {
      setTimeout(() => {
        // 避免第一次进入页面中,图标没有初始化,人后resize报错的问题
        this.myCharts && this.myCharts.resize();
      }, 300);
    },
    screenWidth: {
      immediate: true,
      handler: function(val) {
        this.screenWidth = val;
        setTimeout(() => {
          // 避免第一次进入页面中,图标没有初始化,人后resize报错的问题
          this.myCharts && this.myCharts.resize();
        }, 300);
      },
    },
  },

2. width=100%实际100px的问题

这个原因是因为图形尚未被加载出来,不知道父元素的宽高,一般出现这种问题是因为,设置了v-show或者tab页,echarts图表在没有显示的tab页里

这种使用一般使用$nextTick,dom元素加载完成后再进行图表初始化

        this.$nextTick(() => {
          // 初始化echarts图表
          this.initCharts();
        });

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值