Echarts跟随容器自适应大小

news/2024/7/11 0:45:13 标签: javascript, vue.js, es6

Echarts跟随容器自适应大小

浏览器缩放,echarts图表大小可以随着浏览器窗口变化而改变。可以兼容各种分辨率。也可以获取echarts容器父级高度和宽度改变echarts图表的大小。

dom层放置一个echarts图表容器,

<template>
	<div ref="main_div" >
		<div id="ChartEcharts"></div>
	</div>
</template>

JavaScript代码

mounted方法里监听页面变化的方法。geth方法是获取页面高度的方法。这里有一个递归调用。为啥递归调用呢?因为页面最开始加载echarts,echarts的容器还没准备好,echarts找不到容器。咱们就用递归算法什么时候有高度了宽度了就加载echarts,100毫秒调用一次。

javascript">	var ChartEcharts;
	export default {
  		data() {
			return {
				main_div_w: 0,
				main_div_h: 0
			}
		},
		methods: {
            initDoubleEncircle() {
				let that = this;
				//有的话就获取已有echarts实例的DOM节点。
				ChartEcharts= echarts.getInstanceByDom(document.getElementById('ChartEcharts')); 
				// 如果不存在,就进行初始化。
				if (ChartEcharts== null) {
					ChartEcharts= echarts.init(document.getElementById('ChartEcharts'));
				}
				// 根据你的业务自己设计图表
			    let option = {...}
				ChartEcharts.setOption(option)
			},
			get_echarts_h_w() {
				var that = this;
				that.$nextTick(function () {
					that.geth()
				})
			},
			geth() {
				let that = this;
				setTimeout(function () {
				// 获取浏览器窗口或者其他的容器都行的
				var docEl = document.documentElement;
					that.main_div_w = docEl.clientWidth; //that.$refs.main_div.offsetWidth
					that.main_div_h = docEl.clientHeight;//that.$refs.main_div.offsetHeight
					if (that.main_div_h < 10) {
						that.geth()
					} else {
						that.$nextTick(() => {
							that.initDoubleEncircle();
							ChartEcharts.resize({ width: (that.main_div_w * 0.3), height: (that.main_div_h * 0.1) });
						})
					}
				}, 100)
			},
		},
		mounted() {
			var that = this
			// 可以监听到浏览器窗口的变化 
			window.addEventListener('resize', function () {
				  that.get_echarts_h_w()
			});
		}
	}

本人爱分享。文章有不对的地方,联系我哦。


http://www.niftyadmin.cn/n/1367363.html

相关文章

控制div跳转到指定的位置的解决方案总结

页面涉及到保密问题&#xff0c;我这里就不给大家发页面效果图啦。 这个是为了解决定位的问题。我的需求是这样的&#xff0c;一个大的页面&#xff0c;左边是数据列&#xff0c;右边是卡片列表&#xff0c;一个卡片一个卡片的&#xff0c;由于卡片很多&#xff0c;咱们给卡片…

ES6 数组去重并且统计数量

function alltotal(data) {if (data.length > 0) {let temp {};//reduce函数很好用具体用法可以查一查let data1 data.reduce((cur, next) > {temp[next.ID] ? "" : temp[next.ID] true && cur.push(next);return cur;}, [])return data1.length;}…

vue F5刷新有闪烁,路由刷新无闪烁

vue 路由里面的方法刷新没有闪烁效果的&#xff0c;数据直接渲染。&#xff08;推荐&#xff09; that.$router.replace({ path: /main, query: { Id: 123 } }) 这种是浏览器F5刷新整个页面都会变dom会重新加载&#xff0c;数据也是重新加载。 window.location #/main?I…

iview 表格多选 保留选中状态 切换分页勾选状态保留

问题描述&#xff1a; iview 表格 添加复选框多选的功能&#xff0c;由于数据过大需要分页处理。每次切换分页后&#xff0c;之前选中的数据被清空了。 解决办法&#xff1a; 代码不详细介绍啦。。。 复制粘贴就能搞定。。。 <template><div><div class"t…

ES6 关于时间的使用和推算

关于时间的用法 问题描述&#xff1a; 有一个开始时间和一个结束时间&#xff0c;结束时间就是当前时间。开始时间往过去退10分钟。 解决办法&#xff1a; 利用时间戳 向过去退10分钟 就用当前的时间戳 减去&#xff08;10 * 60 * 1000&#xff09; 10分钟乘以 60秒 乘以 10…

vue项目搭建:通过指令下载swagger接口文件并导入到项目里

这里是引用 cli.js #!/usr/bin/env nodeconst path require(path); const fs require(fs); const chalk require("chalk"); const figlet require("figlet");const { program } require(commander); const swagger require(./swagger.js);let confi…

正则表达式常用的案例

正则字典 var regulars {year: {regExp: /^(19|20)\d{2}$/,message: "只能为年份(四位,1900-2099)"},number: {regExp: /^(([0-9]\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9])|([0-9]*[1-9][0-9]*))$/,message: "只能为数字"},bankNum: {regExp: /^\…

限时等待

如果一个线程要等待的线程的目标没有实现&#xff0c;那么他会一直等下去&#xff0c;此时就陷入了阻塞等待。 还有一种等待状态叫做延时等待&#xff0c;如果如果我去吃饭&#xff0c;但是饭店已经客满&#xff0c;需要排号&#xff0c;当排到我号时&#xff0c;饭店会叫我&am…