Element Table & echarts 自適應(yīng)

關(guān)于element table 如果布局在大外層設(shè)置 flex 捣鲸,左測 sidebar 自由寬度,右邊設(shè)置 flex:1 就沒有這篇文章了柬祠,可是事情沒那么簡單...

理想的布局:


圖一

項(xiàng)目實(shí)際布局:左邊是 sidebar 然后用 fixed 布局鸟赫, 右邊內(nèi)容區(qū)域是 margin-left 撐開寬度


圖二

Element-ui Table 自適應(yīng)

我們知道 elementui table 寬度默認(rèn)是自適應(yīng)的,最多在 <el-table style="width: 100%"></el-table> 寬度設(shè)置為 100% 就會(huì)自適應(yīng)且列的寬度會(huì)自動(dòng)適應(yīng)今缚,就像我們平時(shí)使用的 table算柳,這是為什么呢?因?yàn)?table 有一個(gè)配置 fit 如下圖

image.png

但是我們看 DOM 結(jié)構(gòu)姓言,table 外部雖然有個(gè)內(nèi)聯(lián)樣式 width: 100%; 內(nèi)容還是有設(shè)置實(shí)際寬度的


image.png

我的問題就出在圖二中瞬项,fixed 區(qū)域觸發(fā)事件使自身寬度變大,右側(cè) margin-left 值變大何荚,也就是右側(cè)內(nèi)容區(qū)域?qū)挾茸冃r(shí)候囱淋,table 寬度不會(huì)改變,導(dǎo)致頁面出現(xiàn)了橫向滾動(dòng)條餐塘。

網(wǎng)上搜出來的解決辦法

  • Table的父元素加個(gè)樣式就可以了 overflow: auto;
  • 還有網(wǎng)上各種復(fù)制蔡俊鋒前輩的答案
  • 還有其他能試的方法

結(jié)果以上的辦法都沒卵用

既然 fit 能自適應(yīng)妥衣,只能看看源碼中 fit 配置了什么


image.png

在路徑 /element-ui/src/utils/resize-event.js 可以找到 addResizeListener 方法


image.png

我們知道監(jiān)聽一個(gè)元素大小變化或者屏幕橫豎屏?xí)r,我們需要監(jiān)聽window.resize事件或者window.orientationchange方法。由于 resize 事件會(huì)在一秒內(nèi)觸發(fā)將近60次税手,所以很容易在改變窗口大小時(shí)導(dǎo)致性能問題蜂筹,所以 window.resize 事件通常是浪費(fèi)的,不過我們有節(jié)流可以有效提高性能芦倒。 可是 window.resize 只能監(jiān)聽 window 對(duì)象艺挪,如果對(duì)于一個(gè) div ,我們是無能為力的熙暴,還好有 resize-observer-polyfill闺属,包里面有用到 MutationObserver API 有興趣可以看看 可以監(jiān)聽到元素的變動(dòng)。

所以想要 table 自適應(yīng)周霉,需要父級(jí)的寬度有觸發(fā)到變化掂器,addResizeListener 事件自動(dòng)會(huì)觸發(fā),自適應(yīng)自然就解決了俱箱。想到兩個(gè)解決方案

父元素設(shè)置 position: relative 国瓮,table 外層新增一個(gè) div, 設(shè)置 position: absolute; 這樣 table 就會(huì)跟隨父元素的寬度變化了狞谱。結(jié)構(gòu)大概是

<div style="position: relative;">
    <div style="position: absolute;">  
        <el-table/>
    </div>
</div>

這樣結(jié)果可行乃摹,唯一遺憾就是 table 脫離文檔流,文檔流內(nèi)的內(nèi)容會(huì)與 table 重疊跟衅。這是就得乖乖計(jì)算 table 的高度撐開孵睬,麻煩

既然這樣我為何不在圖二右內(nèi)容的寬度 在 resize 是設(shè)置寬度,都是 resize 伶跷,設(shè)置多一個(gè)寬度 不會(huì)造成什么浪費(fèi)掰读。這樣就能強(qiáng)制其子元素寬度發(fā)生變化,table 也就理所當(dāng)然的改變寬度了叭莫。 所以 table 的問題解決

Echarts 自適應(yīng)

echarts 提供了 resize 的 api蹈集,不過需要自己去調(diào)用。方法很簡單雇初。

data: () {
  return {
    chart: null //初始化之后賦值為圖表
  }
},
mounted() {
  addListener(document.getElementById('analyze'), this.chartResize)
},
beforeDestroy() {
  removeListener(document.getElementById('analyze'), this.chartResize)
},
methods: {
    chartResize() {
      setTimeout(() => {
        this.chart && this.chart.resize()
      })
    },  
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拢肆,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子靖诗,更是在濱河造成了極大的恐慌郭怪,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呻畸,死亡現(xiàn)場離奇詭異移盆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)伤为,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門咒循,熙熙樓的掌柜王于貴愁眉苦臉地迎上來据途,“玉大人,你說我怎么就攤上這事叙甸∮币剑” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵裆蒸,是天一觀的道長熔萧。 經(jīng)常有香客問我,道長僚祷,這世上最難降的妖魔是什么佛致? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮辙谜,結(jié)果婚禮上俺榆,老公的妹妹穿的比我還像新娘。我一直安慰自己装哆,他們只是感情好罐脊,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蜕琴,像睡著了一般萍桌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上凌简,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天上炎,我揣著相機(jī)與錄音,去河邊找鬼雏搂。 笑死反症,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的畔派。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼润绵,長吁一口氣:“原來是場噩夢啊……” “哼线椰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起尘盼,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤憨愉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后卿捎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體配紫,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年午阵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了躺孝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片享扔。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖植袍,靈堂內(nèi)的尸體忽然破棺而出惧眠,到底是詐尸還是另有隱情,我是刑警寧澤于个,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布氛魁,位于F島的核電站,受9級(jí)特大地震影響厅篓,放射性物質(zhì)發(fā)生泄漏秀存。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一羽氮、第九天 我趴在偏房一處隱蔽的房頂上張望或链。 院中可真熱鬧,春花似錦乏苦、人聲如沸株扛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洞就。三九已至,卻和暖如春掀淘,著一層夾襖步出監(jiān)牢的瞬間旬蟋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國打工革娄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留倾贰,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓拦惋,卻偏偏與公主長得像匆浙,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子厕妖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

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