我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue echarts实现改变canvas长和宽自适应

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue echarts实现改变canvas长和宽自适应

echarts改变canvas长宽自适应

存放Echarts的DOM容器,如果给的高和宽是百分比,渲染的时候DOM容器的高和宽是按百分比给的,但是DOM容器下的子元素div和canvas高和宽是根据图标内容渲染。项目应用的时候,底部会有一部分DOM容器和div的高度差,不美观。

希望Echarts的canvas和DOM容器的高宽一致。

下面给出代码

方法一:根据浏览器宽高为echarts容器赋宽高

<template>
  <div id="main"></div>
</template>
<script>
  import echarts from 'echarts'
  
  export default {
    name: "Chart",
    mounted() {
      var myChartContainer = document.getElementById('main')
	// 获取自适应的高度和宽度
      var resizeMyChartContainer = function() {
        myChartContainer.style.height = window.innerHeight * 0.65 + 'px';
        myChartContainer.style.width = window.innerWidth * 0.75 + 'px';
      };
	// 设置容器高和宽
      resizeMyChartContainer();
      var myChart = echarts.init(myChartContainer);
      let option = {};
      
      myChart.setOption(option);
	// 自适应高和宽
      window.onresize = function () {
        resizeMyChartContainer();
        myChart.resize();
      }
    }
  }
</script>

这里的DOM容器下的div和canvas高和宽和DOM容器一样了

echarts前端的源码

错误1

document.getElementById('main').firstChild.firstChild.style.height = window.innerHeight * 0.55 + 'px'

如果强行获取canvas元素,改变它的高度(上面的div和DOM高度都不变),会把echarts拉高,图像也拉高了,比例不对。

错误2

var myChart = echarts.init(myChartContainer, {width:'800px',height:'400px'});

在初始化的时候传入高和宽,此时DOM元素下的div和canvas的高和宽还是渲染出来的。传入的数据限制了数据展示区域的高和宽。

方法二:根据echarts容器的父容器的宽高为其赋值

首先介绍js获取元素的宽高的方法:

var dom = document.getElementsByClassName('sec')[0];
var w1 = dom.style.width; // 只能获取到内联样式的属性值
var w2 = dom.currentStyle.width; // 虽然支持全部三种设置样式的方式,但是只支持IE
var w3 = window.getComputedStyle(dom).width; // 支持IE、Chrome、Firefox的全部三种样式
var w4 = dom.getBoundingClientRect().width; // 同样能获取及时的尺寸,支持IE、Chrome、Firefox,只是获取到的是数值不带单位
const resizeMyChartContainer = function() {
	// 无需再进行数值计算的,可直接拿带单位的属性
	const containerWidth = window.getComputedStyle(document.getElementsByClassName('app-main')[0]).width
	const containerHeight = window.getComputedStyle(document.getElementsByClassName('app-main')[0]).height
	// 需进行数值计算的,拿不带单位的属性
	const containerHeightWithoutUnit = document.getElementsByClassName('app-main')[0].getBoundingClientRect().height
	// 百分比计算 并加单位
	myChartContainer.style.height = containerHeightWithoutUnit * 0.65 + 'px'
	myChartContainer.style.width = containerWidth
}

echarts自适应屏幕宽度自动改变大小

在vue组件中在mouted钩子里先调用初始化echarts的方法,然后再添加window监听事件resize,让window监控屏幕大小变化,从而用定时器setTimeout每隔100毫秒执行echart.resize()事件。

注意this的指向,在外面从新定义this=this指向,还有初始化resizeTimer为空

在这里插入图片描述

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue echarts实现改变canvas长和宽自适应

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

echarts怎么实现自适应宽度

要实现Echarts图表的自适应宽度,你可以使用以下方法:使用CSS样式控制容器的宽度:将Echarts绘图容器的宽度设置为一个百分比,这样容器将会根据其父元素的宽度自适应调整大小。例如,可以将容器的宽度设置为100%:#chartCont
2023-10-21

Vue-cli3中怎么引入ECharts并实现自适应

本篇内容介绍了“Vue-cli3中怎么引入ECharts并实现自适应”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!效果1. 安装echart
2023-07-02

vue如何实现el-table列宽自适应

这篇文章给大家分享的是有关vue如何实现el-table列宽自适应的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue是什么Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与其它大型框架的区别
2023-06-15

CSS如何实现三栏布局中间一栏自适应且随文字大小变化宽

这篇文章主要介绍了CSS如何实现三栏布局中间一栏自适应且随文字大小变化宽,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。百度面试碰到的题,要实现如下布局效果其中中间这紫色的一栏
2023-06-08

编程热搜

目录