当前位置: 首页 > news >正文

vue3 vben-admin 窗口大小更改后 echarts尺寸变为 100px的问题

问题描述:

当切换切换tab 并且窗口尺寸更改时, echarts的尺寸因为父元素为 0, 自动设置为 100px

vue3 vben-admin 窗口大小更改后 echarts尺寸变为 100px的问题

网上查找资料的结果:

1,使用vue 中的 v-if 来重新设置dom树

缺点: 频繁操作dom树结构, 极其消耗性能

优点: 自适应展示

2,设置固定宽高

缺点: 不能自适应展示, 无需消耗额外性能

优点: 简单粗暴

解决思路:

在窗口更改时, 调用 echarts 的 resize 方法,传入自适应的宽度,而父元素正常时,不传入任何参数,自适应获取父元素宽度

官方文档关于 resize 方法的解释: Documentation - Apache ECharts

  • width 可显式指定实例宽度,单位为像素。如果传入值为 null/undefined/‘auto’,则表示自动取 dom(实例容器)的宽度。
  • height 可显式指定实例高度,单位为像素。如果传入值为 null/undefined/‘auto’,则表示自动取 dom(实例容器)的高度。

解决流程:

在原有的 useECharts.ts 的基础上进行更改,在需要重新设置宽高的时候即调用 resize 方法中加入自适应的宽高
1, useECharts 方法加入指定 dom 元素的入参

export function useECharts(elRef: Ref<HTMLDivElement>, theme: 'light' | 'dark' | 'default' = 'default', parentElRef: Ref<HTMLDivElement>)

2,调用时,传入自适应宽高的 dom 元素节点

const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>, 'default', wrapRef as Ref<HTMLDivElement>);

3.在 resize 方法增加获取 附加 dom 元素 宽度的方法

function resize() { const el = unref(parentElRef); if (!el || !unref(el)) { chartInstance?.resize(); return; } else { chartInstance?.resize({ width: parentElRef.value?.clientWidth // 设置指定节点元素的宽度 // height: hi, }); 
} }
http://www.lryc.cn/news/469666.html

相关文章:

  • Web应用框架-Django应用基础(3)-Jinja2
  • js(深浅拷贝,节流防抖,this指向,改变this指向的方法)
  • 香橙派5(RK3588)使用npu加速yolov5推理的部署过程
  • 基于MWORKS的蓝桥杯「智能装备数字化建模大赛」正式发布,首期培训本周六开启
  • 021、深入解析前端请求拦截器
  • windows中的tracert命令
  • 【玩儿】Java 数字炸弹小游戏(控制台版)+ IO 数据存储
  • 今日头条躺赚流量:自动化新闻爬取和改写脚本
  • 日常实习与暑期实习详解
  • Git的原理和使用(六)
  • Elasticsearch 中的高效按位匹配
  • LSTM,全称长短期记忆网络(Long Short-Term Memory),是一种特殊的循环神经网络(RNN)结构
  • 导出问题处理
  • 通过cv库智能切片 把不同的分镜切出来 自媒体抖音快手混剪
  • 【机器学习】——numpy教程
  • 多线程——线程的状态
  • 开源数据库 - mysql - 组织结构(与oracle的区别)
  • vue3+vite 部署npm 包
  • 华为鸿蒙HarmonyOS应用开发者高级认证视频及题库答案
  • 【计网】从零开始认识IP协议 --- 认识网络层,认识IP报头结构
  • 大一物联网要不要转专业,转不了该怎么办?
  • LeetCode题练习与总结:4的幂--342
  • ubuntu GLEW could not be initialized : Unknown error
  • 51c~目标检测~合集1
  • 前端工程化面试题
  • 【Visual Studio】下载安装 Visual Studio Community 并配置 C++ 桌面开发环境的图文教程
  • 010Editor:十六进制编辑器
  • Vscode中Github Copilot无法使用
  • <项目代码>YOLOv8表情识别<目标检测>
  • 利用Msfvenom实现对Windows的远程控制