vue3+echarts+flex布局自适应

做可视化数据大屏响应式展示

需实现的效果图

<div style="display: flex;flex-direction:column; width:300px;height: 300px;border:solid 1px red;">
	<div id="div1" class="div1" style="flex: 1;border:solid 1px red;">1</div>
	<div id="div2" class="div2" style="flex: 1;border:solid 1px red;">2</div>
</div>

用了flex布局,但是echarts的div的高度没有固定,所以每次echart加载进来的时候echart默认给这个div100px的高度,使得图表没有在div内布满,底下会有一些空缺

​ 

<div style="display: flex;flex-direction:column; width:300px;height: 300px;border:solid 1px red;">
	<div id="div1" class="div1" style="flex: 1;border:solid 1px red;">1</div>
	<div id="div2" class="div2" style="flex: 1;border:solid 1px red;">2</div>
</div>

这样布局,在div1中直接加载了动画后,就会出现上面的空隙问题。

(以下博文把原因说的很详细)

在Vue中使用flex布局 echarts多图标不能自适应缩放问题-CSDN博客

echart使用flex布局实现高度自适应遇到的问题_echarts:echarts中flex布局可能会导致高度不能适应-CSDN博客

此时,因为需求是要求任意拉到网页屏幕大小,不按刷新键,页面布局也能自动改变。 就毙掉了之前想通过在js内计算div的高度再赋值的方式。

但是,在外面加入一个div(div-wrapper),div1再用absolute去布局,这里可避开此问题

<div style="display: flex;flex-direction:column; width:200px;height: 200px;border:solid 1px red;">

  <div class="div-wrapper" style="flex: 1; position: relative;">
	<div id="div1" class="div1" style="position: absolute;top: 0;bottom: 0;left: 0;right: 0;background: pink;">1</div>
  </div>

  <div style="display: flex;flex-direction:column; width:200px;height: 200px;border:solid 1px red;">
	<div class="div-wrapper" style="flex: 1; position: relative;">
		<div id="div2" class="div2" style="position: absolute;top: 0;bottom: 0;left: 0;right: 0;background: pink;">1</div>
	</div>
  </div>
</div>

 

这样子就完美的解决了

另外屏幕拉大变小监听事件,借鉴了博客vue3中使用echarts和echarts自适应_vue3 echarts resize_开发那点事儿~的博客-CSDN博客的,用了插件element-resize-detector

借鉴的关键代码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值