vue中echarts3.0自適應(yīng)的方法
前端時(shí)間做一個(gè)vue的項(xiàng)目,echart是按需引入的如下:
1
2
3
4
5
6
7
// 引入 ECharts 主模塊
import echarts from
'echarts/lib/echarts'
// 引入折線圖
import
'echarts/lib/chart/line'
// 引入提示框和圖例組件
import
'echarts/lib/component/tooltip'
import
'echarts/lib/component/legendScroll'
然后發(fā)現(xiàn)在縮放瀏覽器窗口時(shí)折線圖并不會(huì)自適應(yīng),費(fèi)了好一會(huì)才解決,記錄下來(lái)給需要的小伙伴,
第一種:瀏覽器自適應(yīng)
通過(guò):
在myChart.setOption后添加
1
window.onresize = myChart.resize;
如果有多個(gè)圖形,可以封裝成方法:?
1
2
3
4
5
6
7
8
9
10
mounted(){
this
.changEcharts();
},
methods:{
changEcharts() {
window.addEventListener(
'resize'
, ()=> {
this
.drawLineDom.resize();
this
.todayFlowDom.resize();
this
.hitRateDom.resize();});};},}
this
.drawLineDom =
this
.$echarts.init(document.getElementById(
'chart-bandwidth'
));
第二種情況,根據(jù)div大小的變化進(jìn)行自適應(yīng)
因?yàn)関ue不能實(shí)時(shí)監(jiān)測(cè)div大小變化的,所以我定義了一個(gè)按鍵,當(dāng)按鍵的值變化的時(shí)候,進(jìn)行resize;
1
2
3
4
5
6
7
8
9
import { mapState }from
'vuex'
;
computed: mapState({isCollapse:
'isCollapse'
,
//這里我是語(yǔ)用的vuex保存的變量,可以不用vuex,我是因?yàn)榻M件之間的通訊}),
watch: {
isCollapse() {
// 注意一定不要用箭頭函數(shù),會(huì)獲取不到this
setTimeout(() => {
this
.drawLineDom.resize();
this
.todayFlowDom.resize();
this
.hitRateDom.resize();
}, 500);},},
其實(shí)我用這個(gè)是在導(dǎo)航進(jìn)行伸縮的時(shí)候,導(dǎo)致div大小發(fā)生了變化,所以這樣執(zhí)行reszie,就能完美的自適應(yīng)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
標(biāo)簽:
vue中echarts3.0自適應(yīng)的方法的評(píng)論 (共 條)
