echarts 显示隐藏后宽度高度变小问题

简介: 笔记

实况解析



见下图,此图中,数据总统计下有两个大的分类:


表格数据(table形式)

echarts(数据可视化形式)

我可以点击按钮,切换两个视图(通过控制display)产生的问题是:


如果默认显示 echarts,如下图,是没有问题的,但如果优先显示表格,再切换到 echarts界面,就会出现高度和宽度不对的情况。


1. 正常情况下


15.png

什么称之为正常情况 => echarts的外部容器宽高都够,且初始状态为display:block


2. 非正常情况


16.png

非正常情况 =>  echarts的外部容器宽高不明确,因为其初始状态为display:none。此时echarts会默认设置最小宽度与高度,如上图所示。


3. 处理方案及思路



原因上面已经简述了,这时候应该思考的是:


它是什么时候绘制的?

找到绘制方法

等echarts的父元素设置为display:block再去渲染

不能重复渲染,只渲染一次,除非数据更新了(考虑到性能问题)


4. 解决方案



本解决方案是将echarts封装成子组件的形式(很方便,建议使用):


默认的渲染方式是(echarts.vue):

   drawLine() {
      // 基于准备好的dom,初始化echarts实例
      // console.log(this.id);
      let myChart = echarts.init(document.getElementById(this.id));
      // 绘制图表
      myChart.setOption({
        title: {
          text: "",
        },
        tooltip: {
          trigger: "axis",
        },
        legend: {
          data: ["新增用户", "充值", "返利", "UV日活", "PV访问量", "发贴数"],
        },
        grid: {
          left: "3%",
          right: "4%",
          bottom: "3%",
          containLabel: true,
        },
        xAxis: {
          type: "category",
          boundaryGap: false,
          data: [],
        },
        yAxis: {
          type: "value",
        },
        series: [
          // 数据
        ],
      });
    },

以上是绘制的方法,默认的调用是在此组件的挂载阶段:

  mounted() {
    this.drawLine();
  }

由于我们是在父组件调用,当容器为display:block的时候调用,所以此处调用注释掉!

父组件:

    // 切换div显示隐藏的方法
    changeTable(type) {
      if (type) {
        this.isTable = true;
      } else {
        this.isTable = false;
        if (!this.isInit) {
          this.$nextTick(() => {
            // hd为echarts组件上的ref值
            this.$refs.hd.drawLine();
          });
          // isInit 为节流阀 防止多次绘制
          this.isInit = true;
        }
      }
    },


目录
相关文章
|
5月前
Echarts 设置数据条颜色 宽度
Echarts 设置数据条颜色 宽度
|
JavaScript 前端开发
vue中设置echarts宽度自适应
vue中设置echarts宽度自适应
248 0
|
JavaScript 前端开发
vue中动态加入ECharts图表时,ECharts宽度自适应/不能100%撑开
vue中动态加入ECharts图表时,ECharts宽度自适应/不能100%撑开
11293 0
|
3月前
|
数据可视化
echarts图表坐标轴数据标签添加下划线
echarts图表坐标轴数据标签添加下划线
61 0
|
3月前
|
前端开发 JavaScript BI
Django教程第5章 | Web开发实战-数据统计图表(echarts、highchart)
使用echarts和highcharts图表库实现折线图、柱状图、饼图和数据集图
68 2
|
14天前
|
数据可视化 JavaScript 前端开发
Echarts是一个开源的JavaScript可视化库,用于创建各种类型的图表
Echarts是JavaScript的开源可视化库,Python通过Pyecharts库可调用它来绘制图表。示例展示了如何用Pyecharts创建柱状图:定义图表对象,设置标题和坐标轴,添加X轴、Y轴数据,最后渲染展示。Pyecharts还支持折线图、散点图、饼图等多种图表类型,更多详情可查阅官方文档。
30 0
|
17天前
|
前端开发 JavaScript 定位技术
Docusaurus框架——react+antd+echarts自定义mdx生成图表代码解释文档
Docusaurus框架——react+antd+echarts自定义mdx生成图表代码解释文档
28 0
|
18天前
|
存储
vue2、vue3分别配置echarts多图表的同步缩放(二)
vue2、vue3分别配置echarts多图表的同步缩放
18 0
|
18天前
|
API
vue2、vue3分别配置echarts多图表的同步缩放(一)
vue2、vue3分别配置echarts多图表的同步缩放
17 0