elementUI tabs切换 echarts宽度挤压到一起 由100%变成100px

news2024/9/25 17:18:01

被压缩的图表:
在这里插入图片描述
正常显示
在这里插入图片描述

      <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
          <el-tab-pane name="first">

          </el-tab-pane>
          <el-tab-pane name="second" label="未达成原因分析">
            <div class="col-md-12">
              <div id="mychart1" class="col-sm-4" style="height: 400px">
              </div>

            </div>
          </el-tab-pane>
       </el-tabs>

1.需求:点击tab切换echarts

2.所用技术:引的vue.js elementUI 切换用的是elementUI中的Tabs标签页
3.遇到了几个问题:

1》报错:[Vue warn]: Error in mounted hook: “TypeError: Cannot read property ‘getAttribute’ of null”

2》点击切换 tabs,导致echarts宽挤到一起,只有100px

3》点击切换tabs,改变(放大或缩小)页面大小,再切换tabs,导致echarts的宽挤到一起 只有100px,再改变页面大小,echarts图表恢复正常。
  
echarts绘制图表计算宽度的时候,由于第二个tab的属性display: none; 所以无法获取到clientWidth,而 parseInt(stl.width, 10)) 将width: 100%;转为100,所以计算出的图表宽度为100px。

6.网上查了好多资料解决办法:

6-1:第一个报错的问题是:
在这里插入图片描述
出现该错误的原因是:Echarts的图形容器还未生成就对其进行了初始化所造成的 解决方法如下:

//echarts容器 添加ref<div id="bar_dv" ref="chart"> 
// 基于准备好的dom 初始化echarts实例,(把第一行代码修改成第二行) 
var bar_dv = document.getElementById('bar_dv'); 
var bar_dv = this.$refs.chart; 
let myChart = this.$echarts.init(bar_dv):

6-2:

1> 通过elementui 自带的 lazy/:lazy=true (本项目添加后无效)

<el-tab-pane label="用户" name="user" lazy>用户</el-tab-pane>

2> 通过添加 mychart.resize() 重置容器大小(本项目添加后无效)

let _this = this;
window.addEventListener("resize", function () {
    _this.siteLine.resize();
}); 

3> 通过添加 setTimeout (本项目添加后无效)

setTimeout(() => {
  let weekVisitData = this.$echarts.init(this.$refs.weekVisit);
  weekVisitData.setOption(this.opt)
},0)

4> js中通过父元素的宽度预先给容器赋宽度,在window的resize里先修改dom的width 然后再调用echart的resize

$("#chartMain").css('width',$("#TabContent").width());

经过修改发现可以自适应,但是resize这个方法和获取div宽度的方法不能一起使用,导致隐藏的div还是没有宽度。浏览器缩小再放大 隐藏的div就无法自适应了。

又出现了新的问题,尴尬···

5> 通过v-if控制 (修改后可凑合解决)

参考网上其他的解决方案,自己又做了下修改 添加了点东西,解决方法如下:

(这边不清楚的需要看下elementUI文档 --Tabs标签页理解)
在这里插入图片描述

<el-tabs v-model="activeName" @tab-click="handleClick">
    <el-tab-pane label="用户管理" name="first">
      // echarts图表标签
    <div v-if='activeName === "first"'>   
      <div id='echartsDemo'></div>
    </div>
   </el-tab-pane>
    <el-tab-pane label="配置管理" name="second">
    <div v-if='activeName === "second"'> 
      <div id='echartsDemo'></div>
    </div>
  </el-tab-pane>
 
  <el-tab-pane label="角色管理" name="third">角色管理</el-tab-pane>
</el-tabs>
data:activeName:'first',
 mounted() { //如果默认显示第一页,要记得初始化第一页echarts的方法

     this.$nextTick(function() {
         this.echartsLine()
    })
  },

js methods{}:
handleClick(tab, event) {
       if(tab.index == 1){
             this.$nextTick(function() {
                  this.echartsMap()//通过axios拿到的后台数据填充的echarts图表方法
             })
         }else{
             this.$nextTick(function() {                                            
                  this.echartsLine()   
             })
         }
      },

如果按网上其他答案,只做v-if判断,不走js点击方法的话,项目点击切换后就会报错:(这个我没注意查看是什么原因导致的)

echarts.min.js:22 Uncaught (in promise) TypeError: Cannot read property 'getAttribute' of undefined
    at echarts.min.js:22
    at Kd (echarts.min.js:22)
    at Object.t.init (echarts.min.js:22)
    at Object.s.a.init (echarts-gl.min.js:1)
    at main.html:540

7.现在就可以解决我上面的写的后两个问题了,当然还得根据自己的项目情况找到最适合的方法

8.也有其他文章写到的解决方法,如果适合也可以参考一下

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/504953.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在Kali Linux中获得root权限?

根用户名或账户在Linux或任何其他类似Unix的操作系统中拥有所有可用命令和文件的默认权限。它也被称为超级用户、根账户和根用户。用户名&#xff1a;"kali "是登录新Kali系统的标准凭证。这建立了一个用户 "kali "的会话&#xff0c;你必须在 "Sudo …

Java—JDK8新特性—方法引用【内含思维导图】

目录 4.方法引用 思维导图 4.1 什么是方法引用 4.2 为什么要使用方法引用 4.3 方法引用语法 4.4 方法引用的5种情况使用示例 4.方法引用 思维导图 4.1 什么是方法引用 方法引用就是Lambda表达式&#xff0c;也就是函数式接口的一个实例&#xff0c;通过方法的名称来指向一…

Word怎么分页,提高效率就靠这3种方法!

案例&#xff1a;Word怎么分页 【文档要进行分页处理&#xff0c;但是我尝试了好多次还是不行&#xff01;大家知道Word怎么分页吗&#xff1f;】 在使用Microsoft Word处理文档时&#xff0c;我们常常需要进行分页操作。Word的分页功能可以将文档分成多个页面&#xff0c;以…

【Vue3 插件篇】GSAP 动画库与 图片预览插件

GSAP 动画库 GSAP&#xff08;GreenSock Animation Platform&#xff09;是一个专业的动画库&#xff0c;可以用它完成你想要的各种效果 官网地址&#xff1a;https://greensock.com/ 参考文章一&#xff1a;https://www.jianshu.com/p/a8e150f0e569 参考文章二&#xff1a…

利用MQ事务消息实现分布式事务

MQ事务消息使用场景 消息队列中的“事务”&#xff0c;主要解决的是消息生产者和消息消费者的数据一致性问题。 拿我们熟悉的电商来举个例子。一般来说&#xff0c;用户在电商 APP 上购物时&#xff0c;先把商品加到购物车里&#xff0c;然后几件商品一起下单&#xff0c;最后…

为游客提供完美旅程:携程集团携手亚马逊云科技联合创新

刚刚过去的“五一”假期&#xff0c;旅游行业展现出了强劲的复苏势头。经文化和旅游部数据中心测算&#xff0c;全国国内旅游出游合计2.74亿人次&#xff0c;同比增长70.83%。 然而&#xff0c;出行前的航班高铁订票、酒店商旅预订、出游行程安排&#xff0c;就已经让不少家庭为…

C++linux高并发服务器项目实践 day9

Clinux高并发服务器项目实践 day9 信号集信号集相关函数以下信号集相关的函数都是对自定义的信号集进行操作sighandler_t函数sigaction函数 SIGCHLD信号共享内存共享内存使用步骤共享内存操作函数 信号集 许多信号相关的系统调用都需要能表示一组不同的信号&#xff0c;多个信…

深度思考:在 AI 时代,你会被放大一千倍的能力是什么?

Datawhale干货 作者&#xff1a;艾芙&#xff0c;复旦大学&#xff0c;百姓AI教育负责人 前言 大家晚上好&#xff0c;我是艾芙&#xff0c;百姓 AI 的 AI 教育负责人。 先做一下自我介绍&#xff0c;我是一个在技术圈和教育圈反复横跳的斜杠中年了。大约在 5 年前&#xff0c…

C++格式输入输出

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;数据结构 &#x1f525;座右铭&#xff1a;“不要等到什么都没…

常用的数据中心部署架构

说起数据中心&#xff0c;相信大家并不陌生。随着互联网行业的蓬勃发展&#xff0c;大数据时代的快速到来&#xff0c;数据中心同我们的生活紧密联系&#xff0c;息息相关。我们日常生活中的各种数据几乎都存储在数据中心里&#xff0c;例如&#xff1a;手机照片的云端备份、放…

Python小姿势 - # Python相关技术知识点

Python相关技术知识点 标题 在Python中如何处理文件 如果你要处理文件&#xff0c;那么在Python中你需要使用到os模块中的一些方法。 首先&#xff0c;你需要使用os.path.exists方法来判断文件是否存在&#xff1a; python if os.path.exists(file.txt): print(文件存在) else:…

asp.net企业员工考勤管理系统

企业员工管理系统主要是为企业内部管理员工使用的&#xff0c;主要功能分为员工和管理员两部分&#xff0c;主要的功能有用户登录&#xff0c;管理员信息管理&#xff0c;公告信息管理&#xff0c;文件审批管理&#xff0c;员工信息管理&#xff0c;工资信息管理&#xff0c;奖…

全景丨0基础学习VR全景制作,平台篇第19章:热点功能-文本

大家好&#xff0c;欢迎观看蛙色VR官方——后台使用系列课程&#xff01; 功能说明 应用场景 热点&#xff0c;指在全景作品中添加各种类型图标的按钮&#xff0c;引导用户通过按钮产生更多的交互&#xff0c;增加用户的多元化体验。 文本热点&#xff0c;即点击热点后会弹出…

一顿饭的事儿,搞懂了Linux5种IO模型

大家好&#xff0c;我是老三&#xff0c;人生有三大难题&#xff0c;事业、爱情&#xff0c;和 ——这顿吃什么&#xff01; 人在家中躺&#xff0c;肚子饿得响&#xff0c;又到了不得不吃的时候&#xff0c;这顿饭该怎么吃&#xff1f;吃什么呢&#xff1f; Linux里有五种I…

【笔记】【HTTP】《图解HTTP》第1章 了解Web及网络基础

前言 有输入就要有产出&#xff0c;该笔记是本人看完《图解HTTP》后对每章涉及到的知识进行汇总博客将会已书的每章为一篇发布&#xff0c;下一篇博客发布时间不确定笔记中有些个人理解后整理的笔记&#xff0c;可能有所偏差&#xff0c;也恳请读者帮忙指出&#xff0c;谢谢。…

在Notion AI 中轻松打造您的AI私人助理,提供卓越的工作体验

大家好&#xff0c;我是瓜叔。 相信平时喜欢做笔记的人对notion 选应该不陌生近年来越来越多人开始把notion 选当做他们的主力笔记软件。 我自己也用了约4年的时间。如果你也是notion的爱好者但还不知道notion AI是什么。那这篇文章&#xff0c;我会分享我是如何实际操作使用技…

Windows terminal+wsl+ohmyzsh+powerlevel10k打造更美丽的终端

安装wsl 安装 WSL 和 Linux 的默认 Ubuntu 发行版。 了解详细信息https://learn.microsoft.com/zh-cn/windows/wsl/install。 还可以使用此命令通过运行 wsl --install 来安装其他 Linux 发行版。 若要获取发行版名称的有效列表&#xff0c;请运行 wsl --list --online。 wsl -…

AIOps探索 | 新形势下,中小银行如何学好数字化转型“必修课”?

一、强化数智驱动 推进转型升级 2023年4月21日&#xff0c;在江苏省支付清算服务协会、山东省支付清算协会的大力支持下&#xff0c;由金科创新社&#xff08;鑫知&#xff09;主办的“2023农村中小银行数字化转型研讨会”在江苏南京成功举办。 ​本次大会以“强化数智驱动 推…

深入浅出堆—C语言版【数据结构】

二叉树概念博客&#xff1a;http://t.csdn.cn/XIW84 目录 1. 了解堆 1.1 堆的概念 1.2 堆的性质&#xff1a; 1.3 堆的结构图片 1.3.1 小堆 1.3.2 大堆 2. 堆的实现 2.1 插入数据进堆 2.2 向上调整函数 2.3 堆的删除 2.4 向下调整 3. 堆的应用 3.1 建堆&#xff…

赚钱单页产品

今天写一篇文章&#xff0c;讲一个最近看的赚钱单页产品。 先下定义&#xff0c;什么是赚钱的单页产品&#xff1a; 能赚钱&#xff1a;需求切的准单页产品&#xff1a;通常只有少数几个页面就完成了产品的核心功能&#xff0c;一个程序员可以在1天左右&#xff0c;完成开发 先…