使用echarts宽度100%变成100px问题(一招搞定)

每个开发者在使用echarts制作图形过程中,多多少少都会踩到一些坑,比如图形宽高问题,图形清晰度问题。

今天要说的是当图形宽度设置是100%时,切换tab后变成了100px了,如果已经设置了自适应,那么手动去改变浏览器屏幕的宽,会发现图形又恢复正常了。

原因:切换tab时,元素本身就是存在的,只是样式被设置成display: none,那么宽高为0px;echarts对图形最小的默认为100px,所以就会出现这样的情况。

解决问题过程中,在网上看到的帖子里,发现很多并不能解决到问题。
比如:
1.直接写死,显然不符合项目需求;;
2.用window.innerWidth (减去界面一部分宽度) + ‘px’,说到底也是写死的宽度,跟直接写xx px没啥区别,在改变浏览器的宽度时更是被压缩变形了;
3.在后面直接加上resize().这个解决法子很片面。resize是在容器大小发生改变时需要手动去调用,并不是你切换tab时出现100px自动调用的;

最后我使用一个最有效的办法:v-if
把要切换的内容分离出一个组件,让v-if指令去渲染,重新生成组件。
代码截图
用v-if基本可以解决问题了,但是用v-if,对DOM比较不友好,每一次切换都重新销毁重新重成,会产生重排问题,重排问题会影响页面性能,一个页面使用echarts图形多时,严重的会导致页面卡顿,所以得想办法优化重排,减少重排重绘,在这建议通过批量修改DOM来减少重排问题,这样下来就可以完美解决问题了!

参考文章:VUE Element Tab Echarts 宽度 百分百 变成 100px(1行代码解决)

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值