最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue使用echarts圖表自適應(yīng)的幾種解決方案

 更新時(shí)間:2020年12月04日 09:37:42   作者:LLDD。  
這篇文章主要給大家介紹了關(guān)于vue使用echarts圖表自適應(yīng)的幾種解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1.使用window.onresize

let myChart = echarts.init(document.getElementById(dom))
window.onresize = function () {
 	myChat.resize()
}

優(yōu)點(diǎn):可以根據(jù)窗口大小實(shí)現(xiàn)自適應(yīng)

缺點(diǎn):

多個(gè)圖表自適應(yīng)寫法比較麻煩(當(dāng)一個(gè)頁(yè)面的圖表太多時(shí),這樣寫法不是很靈活);

let myChart1 = echarts.init(document.getElementById(dom1))
let myChart2 = echarts.init(document.getElementById(dom2))
window.onresize = function () {
 	myChat1.resize()
 	myChat2.resize()
}

多個(gè)vue頁(yè)面有onresize方法時(shí),會(huì)被覆蓋;

當(dāng)vue頁(yè)面路由跳轉(zhuǎn)到下一個(gè)頁(yè)面時(shí),上一個(gè)頁(yè)面的onresize方法會(huì)繼續(xù)執(zhí)行,(這個(gè)時(shí)候下一個(gè)頁(yè)面已經(jīng)不需要onresize方法執(zhí)行了,當(dāng)圖表過多時(shí)會(huì)造成頁(yè)面卡頓)

2.使用window.addEventListener添加resize方法

let myChart = echarts.init(document.getElementById(dom))
let sizeFun = function () {
 	myChat.resize()
}
window.addEventListener('resize', sizeFun )

優(yōu)點(diǎn):

  1. 可以根據(jù)窗口大小實(shí)現(xiàn)自適應(yīng);
  2. 將圖表方法封裝以后,只需要執(zhí)行一遍就可以實(shí)現(xiàn)多個(gè)圖表的自適應(yīng);
  3. 不會(huì)被覆蓋

缺點(diǎn):

  • 當(dāng)vue頁(yè)面路由跳轉(zhuǎn)到下一個(gè)頁(yè)面時(shí),上一個(gè)頁(yè)面的onresize方法會(huì)繼續(xù)執(zhí)行

【造成這個(gè)問題的原因是因?yàn)関ue是單頁(yè)面應(yīng)用,echarts中的操作都是基于window,當(dāng)然也可以使用window.removeEventListener在下一個(gè)頁(yè)面刪除綁定的方法】

點(diǎn)擊查看window.removeEventListener使用注意點(diǎn)

3.實(shí)現(xiàn)在div使用onresize方法

github項(xiàng)目地址,喜歡的小伙伴給個(gè)star,謝謝

實(shí)現(xiàn)原理:在div上實(shí)現(xiàn)類似window的onresize 監(jiān)聽,這樣既能實(shí)現(xiàn)圖表的自適應(yīng),也不會(huì)因?yàn)轫?yè)面跳轉(zhuǎn)之后繼續(xù)執(zhí)行三個(gè)頁(yè)面的onresize 方法

實(shí)現(xiàn)方法:

引入esresize.js(文末貼上代碼)

在div上綁定對(duì)應(yīng)onresize 方法

優(yōu)點(diǎn):

  1. 可以根據(jù)窗口大小實(shí)現(xiàn)自適應(yīng)
  2. 頁(yè)面跳轉(zhuǎn)不會(huì)執(zhí)行上次操作
  3. 多個(gè)方法不會(huì)覆蓋

缺點(diǎn):暫無發(fā)現(xiàn)(如有問題,歡迎各位補(bǔ)充)

文章參考:JS監(jiān)聽div的resize事件

esresize.js代碼

var EleResize = {
 _handleResize: function (e) {
 var ele = e.target || e.srcElement
 var trigger = ele.__resizeTrigger__
 if (trigger) {
 var handlers = trigger.__z_resizeListeners
 if (handlers) {
 var size = handlers.length
 for (var i = 0; i < size; i++) {
 var h = handlers[i]
 var handler = h.handler
 var context = h.context
 handler.apply(context, [e])
 }
 }
 }
 },
 _removeHandler: function (ele, handler, context) {
 var handlers = ele.__z_resizeListeners
 if (handlers) {
 var size = handlers.length
 for (var i = 0; i < size; i++) {
 var h = handlers[i]
 if (h.handler === handler && h.context === context) {
 handlers.splice(i, 1)
 return
 }
 }
 }
 },
 _createResizeTrigger: function (ele) {
 var obj = document.createElement('object')
 obj.setAttribute('style',
 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden;opacity: 0; pointer-events: none; z-index: -1;')
 obj.onload = EleResize._handleObjectLoad
 obj.type = 'text/html'
 ele.appendChild(obj)
 obj.data = 'about:blank'
 return obj
 },
 _handleObjectLoad: function (evt) {
 this.contentDocument.defaultView.__resizeTrigger__ = this.__resizeElement__
 this.contentDocument.defaultView.addEventListener('resize', EleResize._handleResize)
 }
}
if (document.attachEvent) { // ie9-10
 EleResize.on = function (ele, handler, context) {
 var handlers = ele.__z_resizeListeners
 if (!handlers) {
 handlers = []
 ele.__z_resizeListeners = handlers
 ele.__resizeTrigger__ = ele
 ele.attachEvent('onresize', EleResize._handleResize)
 }
 handlers.push({
 handler: handler,
 context: context
 })
 }
 EleResize.off = function (ele, handler, context) {
 var handlers = ele.__z_resizeListeners
 if (handlers) {
 EleResize._removeHandler(ele, handler, context)
 if (handlers.length === 0) {
 ele.detachEvent('onresize', EleResize._handleResize)
 delete ele.__z_resizeListeners
 }
 }
 }
} else {
 EleResize.on = function (ele, handler, context) {
 var handlers = ele.__z_resizeListeners
 if (!handlers) {
 handlers = []
 ele.__z_resizeListeners = handlers

 if (getComputedStyle(ele, null).position === 'static') {
 ele.style.position = 'relative'
 }
 var obj = EleResize._createResizeTrigger(ele)
 ele.__resizeTrigger__ = obj
 obj.__resizeElement__ = ele
 }
 handlers.push({
 handler: handler,
 context: context
 })
 }
 EleResize.off = function (ele, handler, context) {
 var handlers = ele.__z_resizeListeners
 if (handlers) {
 EleResize._removeHandler(ele, handler, context)
 if (handlers.length === 0) {
 var trigger = ele.__resizeTrigger__
 if (trigger) {
 trigger.contentDocument.defaultView.removeEventListener('resize', EleResize._handleResize)
 ele.removeChild(trigger)
 delete ele.__resizeTrigger__
 }
 delete ele.__z_resizeListeners
 }
 }
 }
}
export {EleResize}

到此這篇關(guān)于vue使用echarts圖表自適應(yīng)的幾種解決方案的文章就介紹到這了,更多相關(guān)vue使用echarts圖表自適應(yīng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue父子組件傳值不能實(shí)時(shí)更新的解決方法

    vue父子組件傳值不能實(shí)時(shí)更新的解決方法

    Vue是一個(gè)以數(shù)據(jù)驅(qū)動(dòng)、組件化的前端框架,其中組件化是Vue中較為重要的概念之一,組件之間的通信則成為Vue中較為普遍的需求,下面這篇文章主要給大家介紹了關(guān)于vue父子組件傳值不能實(shí)時(shí)更新的解決方法,需要的朋友可以參考下
    2023-05-05
  • 淺談vue項(xiàng)目利用Hbuilder打包成APP流程,以及遇到的坑

    淺談vue項(xiàng)目利用Hbuilder打包成APP流程,以及遇到的坑

    這篇文章主要介紹了淺談vue項(xiàng)目利用Hbuilder打包成APP流程,以及遇到的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Vue3中Watch、Watcheffect、Computed的使用和區(qū)別解析

    Vue3中Watch、Watcheffect、Computed的使用和區(qū)別解析

    Watch、Watcheffect、Computed各有優(yōu)劣,選擇使用哪種方法取決于應(yīng)用場(chǎng)景和需求,watch?適合副作用操作,watchEffect適合簡(jiǎn)單的自動(dòng)副作用管理,computed?適合聲明式的派生狀態(tài)計(jì)算,本文通過場(chǎng)景分析Vue3中Watch、Watcheffect、Computed的使用和區(qū)別,感興趣的朋友一起看看吧
    2024-07-07
  • 詳解Vue項(xiàng)目中實(shí)現(xiàn)錨點(diǎn)定位

    詳解Vue項(xiàng)目中實(shí)現(xiàn)錨點(diǎn)定位

    這篇文章主要介紹了Vue項(xiàng)目中實(shí)現(xiàn)錨點(diǎn)定位,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 基于vue-cli創(chuàng)建的項(xiàng)目的目錄結(jié)構(gòu)及說明介紹

    基于vue-cli創(chuàng)建的項(xiàng)目的目錄結(jié)構(gòu)及說明介紹

    下面小編就為大家分享一篇基于vue-cli創(chuàng)建的項(xiàng)目的目錄結(jié)構(gòu)及說明介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助
    2017-11-11
  • vue+vant移動(dòng)端顯示table表格加橫向滾動(dòng)條效果

    vue+vant移動(dòng)端顯示table表格加橫向滾動(dòng)條效果

    vant移動(dòng)端顯示table效果,增加復(fù)選框,可以進(jìn)行多選和全選,加橫向滾動(dòng)條,可以看全部?jī)?nèi)容,下面通過本文給大家分享vue+vant移動(dòng)端顯示table表格加橫向滾動(dòng)條效果,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • Vue前端表格導(dǎo)出Excel文件的圖文教程

    Vue前端表格導(dǎo)出Excel文件的圖文教程

    我們?cè)陂_發(fā)的時(shí)候會(huì)經(jīng)常用的導(dǎo)出excel表格功能,剛好自己開發(fā)有遇到,就記錄一下,下面這篇文章主要給大家介紹了關(guān)于Vue前端表格導(dǎo)出Excel文件的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • vant-ui組件調(diào)用Dialog彈窗異步關(guān)閉操作

    vant-ui組件調(diào)用Dialog彈窗異步關(guān)閉操作

    這篇文章主要介紹了vant-ui組件調(diào)用Dialog彈窗異步關(guān)閉操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Vue3中簡(jiǎn)單實(shí)現(xiàn)動(dòng)態(tài)添加路由

    Vue3中簡(jiǎn)單實(shí)現(xiàn)動(dòng)態(tài)添加路由

    本文主要介紹了Vue3中簡(jiǎn)單實(shí)現(xiàn)動(dòng)態(tài)添加路由,,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Vue3配置axios跨域?qū)崿F(xiàn)過程解析

    Vue3配置axios跨域?qū)崿F(xiàn)過程解析

    這篇文章主要介紹了Vue3配置axios跨域?qū)崿F(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論

报价| 乌苏市| 虞城县| 锡林浩特市| 和龙市| 堆龙德庆县| 乐亭县| 通辽市| 嫩江县| 临朐县| 谷城县| 三台县| 瓦房店市| 河南省| 阿瓦提县| 通道| 兰州市| 本溪市| 岚皋县| 墨玉县| 罗城| 榆林市| 伊宁市| 普宁市| 来凤县| 延庆县| 冷水江市| 青冈县| 尼木县| 大丰市| 香河县| 鲜城| 龙岩市| 永修县| 昌吉市| 铜鼓县| 南京市| 封丘县| 西乌珠穆沁旗| 潞城市| 丘北县|