欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue?echarts實(shí)現(xiàn)改變canvas長和寬自適應(yīng)

 更新時(shí)間:2022年04月01日 10:34:11   作者:ttt_tangyuan  
這篇文章主要介紹了vue?echarts實(shí)現(xiàn)改變canvas長和寬自適應(yīng)問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

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容器一樣了

echarts前端的源碼

錯(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)屏幕寬度自動(dò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è)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • websocket+Vuex實(shí)現(xiàn)一個(gè)實(shí)時(shí)聊天軟件

    websocket+Vuex實(shí)現(xiàn)一個(gè)實(shí)時(shí)聊天軟件

    這篇文章主要利用websocked 建立長連接,利用Vuex全局通信的特性,以及watch,computed函數(shù)監(jiān)聽消息變化,并驅(qū)動(dòng)頁面變化實(shí)現(xiàn)實(shí)時(shí)聊天,感興趣的可以了解一下
    2021-08-08
  • element的el-form和el-table嵌套使用實(shí)現(xiàn)

    element的el-form和el-table嵌套使用實(shí)現(xiàn)

    本文主要介紹了element的el-form和el-table嵌套使用實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • vue實(shí)現(xiàn)動(dòng)態(tài)監(jiān)測元素高度

    vue實(shí)現(xiàn)動(dòng)態(tài)監(jiān)測元素高度

    這篇文章主要介紹了vue實(shí)現(xiàn)動(dòng)態(tài)監(jiān)測元素高度方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue2.x中的provide和inject用法小結(jié)

    vue2.x中的provide和inject用法小結(jié)

    這篇文章主要介紹了vue2.x中的provide和inject用法小結(jié),本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-12-12
  • Vue?uni-app框架實(shí)現(xiàn)上拉加載下拉刷新功能

    Vue?uni-app框架實(shí)現(xiàn)上拉加載下拉刷新功能

    uni-app是一個(gè)使用Vue.js(opens?new?window)開發(fā)所有前端應(yīng)用的框架,開發(fā)者編寫一套代碼,可發(fā)布到iOS、Android、Web(響應(yīng)式)、以及各種小程序(微信/支付寶/百度/頭條/飛書/QQ/快手/釘釘/淘寶)、快應(yīng)用等多個(gè)平臺
    2022-09-09
  • vue項(xiàng)目國際化vue-i18n的安裝使用教程

    vue項(xiàng)目國際化vue-i18n的安裝使用教程

    最近接觸學(xué)習(xí)Vue.js框架結(jié)合Element-ui組件開發(fā)項(xiàng)目。由于最近需要實(shí)現(xiàn)國際化功能,所以下面這篇文章主要介紹了vue項(xiàng)目國際化vue-i18n的使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2018-03-03
  • vue單向以及雙向數(shù)據(jù)綁定方式(v-bind和v-model的使用)

    vue單向以及雙向數(shù)據(jù)綁定方式(v-bind和v-model的使用)

    這篇文章主要介紹了vue單向以及雙向數(shù)據(jù)綁定方式(v-bind和v-model的使用),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Vue2利用echarts繪制折線圖,餅圖和大圖

    Vue2利用echarts繪制折線圖,餅圖和大圖

    這篇文章主要為大家詳細(xì)介紹了Vue2如何利用echarts繪制折線圖,餅圖和大圖,文中的示例代碼簡潔易懂,具有一定的借鑒價(jià)值,需要的可以參考一下
    2023-04-04
  • 創(chuàng)建和運(yùn)行Vue.js項(xiàng)目方法demo

    創(chuàng)建和運(yùn)行Vue.js項(xiàng)目方法demo

    這篇文章主要為大家介紹了創(chuàng)建和運(yùn)行Vue.js項(xiàng)目方法demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • vue使用css-rcurlyexpected等less報(bào)錯(cuò)問題

    vue使用css-rcurlyexpected等less報(bào)錯(cuò)問題

    這篇文章主要介紹了vue使用css-rcurlyexpected等less報(bào)錯(cuò)問題,具有很的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10

最新評論