[echarts]echarts的canvas画布大小与容器大小不一致的解决方案
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>
更多推荐
已为社区贡献1条内容
所有评论(0)