记录一下在使用datav和echarts中遇到的适配问题
在使用datav和echarts时,遇到窗口大小变化后不能随着窗口尺寸变化,或是直接echarts消失。
解决方法:
在html中(顺带一提,我使用的是vue+elementui)
<template>
<dv-border-box-13 ref="inInfo">
<div class="product-in-title">
<i class="el-icon-s-order"></i>
今日入库详情
</div>
<div id="todayInInfo" class="todayInInfo">
</div>
</dv-border-box-13>
</template>
在script中写上
<script>
export default{
data(){
return {
myChartTodayIn:'',//实例
}
},
......
mounted(){
this.myChartTodayIn = echarts.init(document.getElementById('todayInInfo'))
this.showEchartTodayIn()
window.addEventListener('resize',this.handleResize) //主要是需要监听窗口的大小
}
beforeDestroy() {
window.removeEventListener('resize', this.handleResize);//在销毁组件前把监听事件也移除
},
methods:{
handleResize() {//监听并重置echart和datav位置
setTimeout(() =>{
//echart位置重调
this.myChartTodayIn.resize()
//datav位置重调
this.$refs.inInfo.initWH()
},200)
//通过计算动态调整框体的宽度
//this.windowWidth = this.$refs.appRef.clientWidth//对滚动表进行位置重调
},
showEchartTodayIn(){
// 绘制图表
this.myChartTodayIn.setOption({
grid:{
left:'17%'
},
xAxis: {
splitLine:{
show:true
},
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
axisLabel:{//修改坐标系字体颜色
show:true,
color:"#8DB6DB"
},
},
yAxis: {
type: 'value',
splitLine:{
show:true
},
axisLabel:{//修改坐标系字体颜色
show:true,
color:"#8DB6DB"
},
},
series: [
{
data: [820, 932, 901, 934, 1290, 1330, 1320],
type: 'line',
smooth: true
}
]
})
},
}
</script>
总结:就是监听窗口的大小变化,如果变化了就重新给datav和echarts进行尺寸大小的初始化
另外,如果这个方法不行的话,也可以通过动态的样式来计算框体的尺寸,不过这种方式也同样需要监听窗口的大小
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律