vue?echarts實(shí)現(xiàn)改變canvas長和寬自適應(yīng)
echarts改變canvas長寬自適應(yīng)
存放Echarts的DOM容器,如果給的高和寬是百分比,渲染的時(shí)候DOM容器的高和寬是按百分比給的,但是DOM容器下的子元素div和canvas高和寬是根據(jù)圖標(biāo)內(nèi)容渲染。項(xiàng)目應(yīng)用的時(shí)候,底部會有一部分DOM容器和div的高度差,不美觀。
希望Echarts的canvas和DOM容器的高寬一致。
下面給出代碼
方法一:根據(jù)瀏覽器寬高為echarts容器賦寬高
<template>
<div id="main"></div>
</template>
<script>
import echarts from 'echarts'
export default {
name: "Chart",
mounted() {
var myChartContainer = document.getElementById('main')
// 獲取自適應(yīng)的高度和寬度
var resizeMyChartContainer = function() {
myChartContainer.style.height = window.innerHeight * 0.65 + 'px';
myChartContainer.style.width = window.innerWidth * 0.75 + 'px';
};
// 設(shè)置容器高和寬
resizeMyChartContainer();
var myChart = echarts.init(myChartContainer);
let option = {};
myChart.setOption(option);
// 自適應(yīng)高和寬
window.onresize = function () {
resizeMyChartContainer();
myChart.resize();
}
}
}
</script>
這里的DOM容器下的div和canvas高和寬和DOM容器一樣了

錯(cuò)誤1
document.getElementById('main').firstChild.firstChild.style.height = window.innerHeight * 0.55 + 'px'如果強(qiáng)行獲取canvas元素,改變它的高度(上面的div和DOM高度都不變),會把echarts拉高,圖像也拉高了,比例不對。
錯(cuò)誤2
var myChart = echarts.init(myChartContainer, {width:'800px',height:'400px'});
在初始化的時(shí)候傳入高和寬,此時(shí)DOM元素下的div和canvas的高和寬還是渲染出來的。傳入的數(shù)據(jù)限制了數(shù)據(jù)展示區(qū)域的高和寬。
方法二:根據(jù)echarts容器的父容器的寬高為其賦值
首先介紹js獲取元素的寬高的方法:
var dom = document.getElementsByClassName('sec')[0];
var w1 = dom.style.width; // 只能獲取到內(nèi)聯(lián)樣式的屬性值
var w2 = dom.currentStyle.width; // 雖然支持全部三種設(shè)置樣式的方式,但是只支持IE
var w3 = window.getComputedStyle(dom).width; // 支持IE、Chrome、Firefox的全部三種樣式
var w4 = dom.getBoundingClientRect().width; // 同樣能獲取及時(shí)的尺寸,支持IE、Chrome、Firefox,只是獲取到的是數(shù)值不帶單位
const resizeMyChartContainer = function() {
// 無需再進(jìn)行數(shù)值計(jì)算的,可直接拿帶單位的屬性
const containerWidth = window.getComputedStyle(document.getElementsByClassName('app-main')[0]).width
const containerHeight = window.getComputedStyle(document.getElementsByClassName('app-main')[0]).height
// 需進(jìn)行數(shù)值計(jì)算的,拿不帶單位的屬性
const containerHeightWithoutUnit = document.getElementsByClassName('app-main')[0].getBoundingClientRect().height
// 百分比計(jì)算 并加單位
myChartContainer.style.height = containerHeightWithoutUnit * 0.65 + 'px'
myChartContainer.style.width = containerWidth
}
echarts自適應(yīng)屏幕寬度自動改變大小
在vue組件中在mouted鉤子里先調(diào)用初始化echarts的方法,然后再添加window監(jiān)聽事件resize,讓window監(jiān)控屏幕大小變化,從而用定時(shí)器setTimeout每隔100毫秒執(zhí)行echart.resize()事件。
注意this的指向,在外面從新定義this=this指向,還有初始化resizeTimer為空

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- vue使用echarts圖表自適應(yīng)的幾種解決方案
- 完美解決vue 中多個(gè)echarts圖表自適應(yīng)的問題
- vue中echarts3.0自適應(yīng)的方法
- Vue中使用Echarts可視化圖表寬度自適應(yīng)的完美解決方案
- Vue實(shí)現(xiàn)Echarts圖表寬高自適應(yīng)的實(shí)踐
- vue中的echarts實(shí)現(xiàn)寬度自適應(yīng)的解決方案
- vue中設(shè)置echarts寬度自適應(yīng)的代碼步驟
- Vue-cli3中如何引入ECharts并實(shí)現(xiàn)自適應(yīng)
- vue項(xiàng)目中echarts自適應(yīng)問題的高級解決過程
相關(guān)文章
vue項(xiàng)目出現(xiàn)ERESOLVE could not resolve問題及解決
這篇文章主要介紹了vue項(xiàng)目出現(xiàn)ERESOLVE could not resolve問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
vue項(xiàng)目打包之后在本地運(yùn)行的實(shí)現(xiàn)方法
這篇文章主要介紹了vue項(xiàng)目打包之后在本地運(yùn)行的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
vue實(shí)現(xiàn)頁面渲染時(shí)候執(zhí)行某需求的示例代碼
本文主要介紹了vue實(shí)現(xiàn)頁面渲染時(shí)候執(zhí)行某需求,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05
vue路由緩存的幾種實(shí)現(xiàn)方式小結(jié)
這篇文章主要介紹了vue路由緩存的幾種實(shí)現(xiàn)方式,結(jié)合實(shí)例形式詳細(xì)分析了vue.js路由緩存常見實(shí)現(xiàn)方式、使用技巧與操作注意事項(xiàng),需要的朋友可以參考下2020-02-02
Vue.js實(shí)現(xiàn)動畫與過渡效果的示例代碼
在現(xiàn)代前端開發(fā)中,用戶體驗(yàn)至關(guān)重要,一個(gè)精美的動畫過渡不僅能提升界面的美觀性,還能讓用戶在使用時(shí)感受到流暢的交互體驗(yàn),在本文中,我們將深入探討如何在 Vue.js 中實(shí)現(xiàn)動畫與過渡效果,并提供示例代碼,需要的朋友可以參考下2024-10-10
過濾器vue.filters的使用方法實(shí)現(xiàn)
這篇文章主要介紹了過濾器vue.filters的使用方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
Vue模板語法中數(shù)據(jù)綁定的實(shí)例代碼
這篇文章主要介紹了Vue模板語法中數(shù)據(jù)綁定的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05

