溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

隱藏元素之后改變窗體大小時(shí)echarts顯示異常問題

發(fā)布時(shí)間:2020-07-29 14:30:06 來源:網(wǎng)絡(luò) 閱讀:4080 作者:歆冉 欄目:web開發(fā)

代碼:

隱藏元素之后改變窗體大小時(shí)echarts顯示異常問題

問題再現(xiàn)步驟:

第一步:? 打開頁面,能夠正常顯示圖表

第二步:? 點(diǎn)擊隱藏按鈕,讓box隱藏掉,如果此時(shí)直接點(diǎn)擊顯示按鈕,圖表依舊可以

?????????????正常顯示,沒毛病。重點(diǎn)是,如果此時(shí)點(diǎn)擊完了隱藏,不點(diǎn)擊顯示,而是拖動(dòng)窗口大小

????????? ? ?再來點(diǎn)擊顯示按鈕,就會(huì)發(fā)現(xiàn)圖表顯示不出來,為什么會(huì)顯示不出來了?

分析產(chǎn)生的原因:

1 點(diǎn)擊隱藏按鈕以后的,此時(shí)還沒有拖到窗口大小

隱藏元素之后改變窗體大小時(shí)echarts顯示異常問題

會(huì)發(fā)現(xiàn)box的確是隱藏了,display:none;

canvas標(biāo)簽內(nèi)的行內(nèi)樣式有width:623px,height:500px;

2 此時(shí)開始拖動(dòng)窗口大小,改變窗口的大小,再來觀察

隱藏元素之后改變窗體大小時(shí)echarts顯示異常問題

會(huì)發(fā)發(fā)現(xiàn)此時(shí)

canvas標(biāo)簽內(nèi)的行內(nèi)樣式變成了 width:0px, height:100px;

這就是為什么此時(shí)再來點(diǎn)擊顯示按鈕時(shí),圖表顯示不出來的問題所在,因?yàn)榇藭r(shí)畫布的width已經(jīng)為0,

自然而然就顯示不出來,如果此時(shí)再拖動(dòng)窗口大小,圖表就又會(huì)顯示出來。



如何解決該問題了?

解決思路就是在點(diǎn)擊顯示按鈕以后,觸發(fā)窗口大小改變事件就可以完成

隱藏元素之后改變窗體大小時(shí)echarts顯示異常問題

出現(xiàn)該問題的關(guān)鍵還在于一開始我們并沒有給bar元素設(shè)置width屬性

隱藏元素之后改變窗體大小時(shí)echarts顯示異常問題

如果把bar設(shè)置成width:100%,height:100%;就會(huì)出現(xiàn)如下問題:

隱藏元素之后改變窗體大小時(shí)echarts顯示異常問題

width和height都變成了100px了


如果一開就給bar元素就設(shè)置固定寬度和高度,就不會(huì)文章所指的問題了

隱藏元素之后改變窗體大小時(shí)echarts顯示異常問題

但有時(shí)我們需要做到自適應(yīng)不得不去設(shè)置100%,這就是文中所會(huì)出現(xiàn)的問題了。

完成測試代碼:

<!DOCTYPE?html>
<html>
<head>
<meta?charset="UTF-8">
<title></title>
<style?type="text/css">
*{
margin:?0;
padding:?0;
}
.box{
height:?500px;
background-color:?#00B83F;
}
#bar{
height:?100%;
}
.btn?{
position:?fixed;
bottom:?0;
left:?0;
right:?0;
height:?80px;
background-color:?rgba(0,?0,?0,?.5);
z-index:?999;
}
</style>
</head>
<body>
<div?class="box">
<div?id="bar"></div>
</div>
<div?class="btn">
<button>隱藏</button>
<button>顯示</button>
</div>
</body>
<script?src="js/jquery.js"?type="text/javascript"?charset="utf-8"></script>
<script?src="js/echarts.min.js"?type="text/javascript"?charset="utf-8"></script>
<script?type="text/javascript">
var?myChart?=?null;
initChart();
function?initChart()?{
console.log('initChart');
if(!myChart){
myChart?=?echarts.init(document.getElementById('bar'));
}
//?設(shè)置參數(shù)配置
var?option?=?{
title:?{
text:?'柱狀圖'
},
tooltip:?{},
legend:?{
data:?['模擬數(shù)據(jù)']
},
xAxis:?{
data:?['數(shù)學(xué)',?'語文',?'英語',?'體育',?'高數(shù)',?'美術(shù)',?'音樂',?'思想',?'aa',?'bb',?'cc']
},
yAxis:?{
splitLine:?{
show:?false?//?是否顯示y軸的分割線?默認(rèn)是true
}
},
series:?{
type:?'bar',?//?表示的是柱狀圖
data:?[98,?80,?54,?60,?64,?89,?76,?88,?99,?55,?66],
name:?'模擬數(shù)據(jù)',
//barWidth:?30,
}
};
//?顯示圖表
myChart.setOption(option);
$(window).resize(myChart.resize);
}
//?隱藏
$('button:eq(0)').click(function(){
$('.box').hide();
});
//?顯示
$('button:eq(1)').click(function(){
$('.box').show();
$(window).trigger('resize');
});
</script>
</html>


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI