[echarts]echarts的canvas画布大小与容器大小不一致的解决方案

<div class="wrap" style="width:300px;height:300px;">
	<!-- echarts容器 -->
	<div id="echarts" style="width: 100%;height:100%;"></div>
</div>

场景描述:如上所示布局,我的echarts容器大小设置的宽高都是100%,为了让他占满整个wrap盒子;
解决方法1:所以设置echarts宽高为100%

设置宽高百分比之后如果canvas依然是100px或者没有占满图表容器:
解决方案2:利用resize设置width、height

// 获取wrap盒子的宽高
let width = document.getElementById('wrap').clientWidth()
let height= document.getElementById('wrap').clientHeight()
// 渲染echart图表的方法
drawchart() {
	let charts = echarts.init(document.getElementById('chart'))
	// 每次渲染之前都要clear一下,因为图表数据不是一成不变的,当重新调接口获取数据后就要重新渲染,如果不clear,有可能造成图表不变或图表叠加渲染等情况
	charts.clear()	
	let option = {
		...
	}
	// 一般这一步是写charts.resize(),让图表根据当前屏幕尺寸自适应,但是当前canvas画布大小与容器大小不一致,而容器大小已经设置了百分比,所以可以在resize里面手动设置宽高,使其占满整个wrap盒子
	charts.resize({
		//width: width,
		//height: height,
		// es6解构
		width,
		height
	})
	// 渲染图表
	charts.setOption(option)
}

解决方案3:利用v-if,这种情况多发在el-tab el-collapse

<el-collapse v-model="activeName" accordion>
	<el-collapse-item name="1">
		<ZLine
		  :chart="'cpuUse'+index"
		  :title="item?.metricName"
		  :data="item?.metricPoints"
		  :zoom="zoom"
		  :ref="setItemRef"
		  v-if="activeName === '1'"
		/>
	</el-collapse-item>
</el-collapse>
  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值