Vue中使用Echarts可視化圖表寬度自適應(yīng)的完美解決方案
一、問題闡述:
開發(fā)H5項目中應(yīng)用到Echarts數(shù)據(jù)可視化,由于H5主要使用在手機,屏幕寬度大大限制了圖表的展現(xiàn),問題如下。

上圖中x軸的數(shù)據(jù)是動態(tài)的,從2022年切換到2021年數(shù)據(jù)變化,此時如果x軸的數(shù)據(jù)過多就會顯得格外擁擠。
二、解決思路:
我的解決方案是,在放置Echarts的容器(div)外層再套一層容器(div),外層容器寬度固定設(shè)置手機屏幕寬,并設(shè)置溢出顯示滾動條(width: 100%;overflow: auto),內(nèi)層Echarts容器寬度初始寬為100%,如果數(shù)據(jù)大于設(shè)定的量時,就加大放置Echarts的容器寬度。
本以為能順利解決問題時,然而效果并不盡人意,效果如下。

1. 容器寬度改變了
2. 滾動條出現(xiàn)
3. 圖表未加寬到容器寬度
其實每次更改篩選條件都會從新創(chuàng)建實例,但Echarts圖表并未按照預(yù)期加寬,感覺就像緩存了最初設(shè)定的容器寬度一樣。
仔細看文檔才發(fā)現(xiàn),原來Echarts圖表本身是提供了一個resize的函數(shù)專門處理這類問題。
三、最終效果:
完整代碼如下
<!-- 學生統(tǒng)計 折線圖 HTML部分 -->
<div class="stuCensus_box">
<div
id="student_census"
class="student_census"
ref="student_census"
></div>
</div>
// js部分 學生統(tǒng)計 折線圖
initStudentCensus() {
// 根據(jù)x軸內(nèi)容長短設(shè)定echarts的寬度
if (this.stuCensus_xAxis.length > 9) {
this.$refs.student_census.style.width = "200%";
} else if (this.stuCensus_xAxis.length > 5) {
this.$refs.student_census.style.width = "130%";
} else {
this.$refs.student_census.style.width = "100%";
}
var myChart = this.$echarts.init(this.$refs.student_census);
var option = {
tooltip: {
trigger: "axis",
extraCssText: "max-height: 200px; overflow: auto;", // 設(shè)置懸浮窗樣式
position: function (pos, params, dom) {
dom.style.pointerEvents = "auto"; // 修改懸浮窗不可綁定事件的css屬性
},
},
legend: {
type: "scroll",
data: this.stuCensus_legend,
},
grid: {
top: "14%",
left: "0",
right: "1%",
bottom: "3%",
containLabel: true,
},
xAxis: {
type: "category",
data: this.stuCensus_xAxis,
axisLabel: { rotate: 45 },
},
yAxis: {
type: "value",
axisLabel: axisLabel,
},
series: this.stuCensusSeries,
};
myChart.setOption(option, true);
myChart.resize(); // 調(diào)用此API更新echarts的寬高才能生效
},1. 用$refs設(shè)定容器寬度。
2. setOption創(chuàng)建可視化圖表實例
3. resize重繪可視化圖表
效果如下

到此這篇關(guān)于Vue中使用Echarts可視化圖表,寬度自適應(yīng)解決方案的文章就介紹到這了,更多相關(guān)Vue Echarts可視化圖表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue-cli自定義創(chuàng)建項目eslint依賴沖突解決方式
vue-cli是vue.js的腳手架,用于自動生成vue.js+webpack的項目模板,在創(chuàng)建項目時,如果遇到npm安裝報錯,通常是由于依賴版本沖突造成的,文中通過圖文以及代碼介紹的非常詳細,需要的朋友可以參考下2024-09-09
vue項目中按需引入element-ui的正確實現(xiàn)方法
這篇文章主要介紹了vue項目中按需引入element-ui的正確實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01
Vue項目創(chuàng)建首頁發(fā)送axios請求的方法實例
這篇文章主要給大家介紹了關(guān)于Vue項目創(chuàng)建首頁發(fā)送axios請求的相關(guān)資料,文中通過圖文以及實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2023-02-02
vue element 關(guān)閉當前tab 跳轉(zhuǎn)到上一路由操作
這篇文章主要介紹了vue element 關(guān)閉當前tab 跳轉(zhuǎn)到上一路由操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07

