129沈堡、vue項(xiàng)目中v-chart的使用與flex布局 -- 記錄

v-chart的使用

v-chart介紹
先來個(gè)圖表文檔:v-chart文檔:https://v-charts.js.org/#/props
v-chart文檔是這樣介紹的:在使用 echarts 生成圖表時(shí)京髓,經(jīng)常需要做繁瑣的數(shù)據(jù)類型轉(zhuǎn)化、修改復(fù)雜的配置項(xiàng)西壮,v-charts 的出現(xiàn)正是為了解決這個(gè)痛點(diǎn)睛约。基于 Vue2.0echarts 封裝的 v-charts圖表組件寞肖,只需要統(tǒng)一提供一種對前后端都友好的數(shù)據(jù)格式設(shè)置簡單的配置項(xiàng)纲酗,便可輕松生成常見的圖表。
從介紹可以看出v-char裝了echarts讓圖表使用起來更加快捷新蟆、方便觅赊。如果需要了解可以打開文章開頭鏈接。
最近在寫后臺(tái)管理系統(tǒng)的時(shí)候使用到圖表琼稻,搜索發(fā)現(xiàn)了v-chart吮螺,使用起來非常方便,但是我發(fā)現(xiàn)v-chart的一些圖表屬性并沒有寫清楚帕翻,目前使用使用到的是data-zoom屬性配置鸠补,發(fā)現(xiàn)文檔并沒有說明。
為什么使用data-zoom嘀掸,接下來看圖表使用過程就知道:
首先紫岩,數(shù)據(jù)少時(shí)圖表顯示沒什么問題,也不需要配置data-zoom睬塌,如下圖:

但是數(shù)據(jù)很多時(shí)被因,會(huì)使圖表非常擁擠,不僅不容易閱讀衫仑,而且不美觀,如下圖


所以這個(gè)時(shí)候我們就有需求堕花,能夠讓圖表只顯示一部分文狱,所以就用到了data-zoom屬性配置,data-zoom拆開意思就是數(shù)據(jù)移動(dòng)(英文不好^ - ^)缘挽,但是v-chart文檔并沒有寫瞄崇,所以只能是echarts文檔查看配置了呻粹,只能說echarts好多配置,看的很累苏研,好了等浊,簡單配置如下代碼:

// 這是v-chart柱狀圖
<template>
  <div>
   //這里需要綁定data-zoom屬性
    <ve-histogram :data="chartData" :data-zoom="dataZoom"></ve-histogram>
  </div>
</template>
<script>
export default {
  data() {
    this.dataZoom = [
      {
        type: 'slider',
        start: 0,
        end: 20
      },
      {
        type: 'inside',
        start: 0,
        end: 20
      }
    ]
    return {
      chartData: {
        columns: ['日期', '訪問用戶', '下單用戶', '下單率'],
        rows: [
          { 日期: '1/1', 訪問用戶: 1393, 下單用戶: 1093, 下單率: 0.32 },
          { 日期: '1/2', 訪問用戶: 3530, 下單用戶: 3230, 下單率: 0.26 },
          { 日期: '1/3', 訪問用戶: 2923, 下單用戶: 2623, 下單率: 0.76 },
          { 日期: '1/4', 訪問用戶: 1723, 下單用戶: 1423, 下單率: 0.49 },
          { 日期: '1/4', 訪問用戶: 1723, 下單用戶: 1423, 下單率: 0.49 }
        ]
      }
    }
  },
  mounted() {}
}
</script>

這里簡單的解釋一下dataZoom 中的sliderinside這兩個(gè)的作用,配置slider摹蘑,圖標(biāo)就會(huì)出現(xiàn)滾動(dòng)條筹燕,可以使用鼠標(biāo)拖動(dòng)來查看數(shù)據(jù),start開始顯示數(shù)據(jù)的位置衅鹿,這里是從 0%開始顯示撒踪,end是20%就是結(jié)束位置,相差就是圖表可視區(qū)域顯示整體數(shù)據(jù)的20%大渤。配置inside就是可以在圖表區(qū)域內(nèi)使用鼠標(biāo)滾輪來縮放顯示數(shù)據(jù)的范圍制妄。效果圖如下:

當(dāng)然,在echarts上有更多的配置泵三,有需要更多配置的當(dāng)然要去看echarts文檔了耕捞,這個(gè)就是v-chart上沒有寫的配置了,記錄一下烫幕。

v-chart配合flex布局俺抽,width: 0px;的重要性

通常后臺(tái)管理系統(tǒng)都少不了flex布局,因?yàn)橐獎(jiǎng)討B(tài)適應(yīng)頁面嘛纬霞!但是在頁面自動(dòng)縮放后發(fā)現(xiàn)v-chart表沒有隨預(yù)期的縮放凌埂,頁面變大圖表就會(huì)出現(xiàn)一塊空白,如下圖:

刷新頁面后诗芜,發(fā)現(xiàn)圖表又正常了瞳抓,充滿父元素,但是伏恐,在頁面縮小后孩哑,圖表沒有變小,出現(xiàn)了水平滾動(dòng)條翠桦,如下圖:


這里由于圖表沒有像預(yù)期一樣縮小横蜒,導(dǎo)致父元素沒有縮小,而造成沒有適應(yīng)布局销凑,這個(gè)是由于flex布局引起的丛晌,解決方案是,將父元素width設(shè)置為0斗幼,我的代碼如下:

// sass
.wrap{
    display: flex;
    .onLeft{
        flex: 0 0 300px;    
    }
    .onRight{
        flex: 1 1 auto;
        width: 0;
    }
}

這樣的話澎蛛,可以是父元素自適應(yīng)布局,但是蜕窿,圖片長度會(huì)超出父元素谋逻,如下圖:


到這里也只是解決了flex布局呆馁,子元素過長,造成的自適應(yīng)問題毁兆,接著看浙滤。

監(jiān)聽v-chart縮放,自適應(yīng)布局

首先需要一個(gè)插件來監(jiān)聽頁面元素尺寸的變化气堕。
插件element-resize-detector:https://www.npmjs.com/package/element-resize-detector
首先纺腊。安裝這個(gè)插件

// npm包管理
npm install element-resize-detector

然后在vue對應(yīng)的頁面mounted中引入,就是在節(jié)點(diǎn)加載后送巡,開始監(jiān)聽對應(yīng)元素的變化

<template>
  <div ref="chartWrap">
    <ve-line :data="chartData" :data-zoom="dataZoom" :settings="chartSettings" height="300px" ref="chart"></ve-line>
  </div>
</template>

export default {
  mounted() {
    // 獲取圖表節(jié)點(diǎn)和圖表父元素節(jié)點(diǎn)
    const contall = this.$refs.chartWrap
    const chart = this.$refs.chart
    //引入插件
    const elementResizeDetectorMaker = require('element-resize-detector')
    const erd = elementResizeDetectorMaker({
      strategy: 'scroll'
    })
    // 監(jiān)聽父元素尺寸變化摹菠,來重置圖表屬性
    erd.listenTo(contall, function(element) {
      // 圖表自帶的重置函數(shù)
      chart.echarts.resize()
    })
  }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市骗爆,隨后出現(xiàn)的幾起案子次氨,更是在濱河造成了極大的恐慌,老刑警劉巖摘投,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件煮寡,死亡現(xiàn)場離奇詭異,居然都是意外死亡犀呼,警方通過查閱死者的電腦和手機(jī)幸撕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來外臂,“玉大人坐儿,你說我怎么就攤上這事∷喂猓” “怎么了貌矿?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長罪佳。 經(jīng)常有香客問我逛漫,道長,這世上最難降的妖魔是什么赘艳? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任酌毡,我火速辦了婚禮,結(jié)果婚禮上蕾管,老公的妹妹穿的比我還像新娘枷踏。我一直安慰自己,他們只是感情好掰曾,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布旭蠕。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪下梢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天塞蹭,我揣著相機(jī)與錄音孽江,去河邊找鬼。 笑死番电,一個(gè)胖子當(dāng)著我的面吹牛岗屏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播漱办,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼这刷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了娩井?” 一聲冷哼從身側(cè)響起暇屋,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎洞辣,沒想到半個(gè)月后咐刨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扬霜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年定鸟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片著瓶。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡联予,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出材原,到底是詐尸還是另有隱情沸久,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布华糖,位于F島的核電站麦向,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏客叉。R本人自食惡果不足惜诵竭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望兼搏。 院中可真熱鬧卵慰,春花似錦、人聲如沸佛呻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吓著。三九已至鲤嫡,卻和暖如春送挑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背暖眼。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工惕耕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人诫肠。 一個(gè)月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓司澎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親栋豫。 傳聞我的和親對象是個(gè)殘疾皇子挤安,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容

  • 2018-07-17 一、如何報(bào)名參加馬拉松比賽 1丧鸯、如果馬拉松是在外地蛤铜,那么建議大家提前一個(gè)早班飛機(jī)過去,到了之...
    mixigood閱讀 222評論 0 0
  • 讀一座安睡中的遠(yuǎn)山 我先是用目光 再用雙腿骡送,一步比一步朝向云天 然后我用耳朵昂羡,用鼻翼 還用雙臂 向山風(fēng)撒開一張纖細(xì)...
    李榆閱讀 394評論 6 10
  • 誰念西風(fēng)獨(dú)自涼?蕭蕭黃葉閉疏窗摔踱。 沉思往事立殘陽虐先。被酒莫驚春睡重, 賭書消得潑茶香派敷。當(dāng)時(shí)只道是尋常蛹批。 浣溪沙納蘭性...
    錦時(shí)青藤閱讀 301評論 0 0