echart图表 宽高度自适应

之前在使用echart的时候就发现了echart是不支持图表高度自适应的。翻阅echarts文档,里面都有配置详细介绍,通过设置宽度百分比再使用 echart图表本身是提供了一个resize的函数可实现宽度自适应。 但是二十世纪新世界,只能宽度自适应那可是不行的呀

Follow me

设置渲染echart图表的div随着window的width和height变化而变化

// An highlighted block
var scatterechartDom=document.getElementById('scatterechart');
function resizeDom(dom) {//通过窗体高宽计算容器高宽,渲染echart图表的div的宽高度已达到自适应目的
	dom.style.width = (window.innerWidth-15)+'px';
	dom.style.height = (window.innerHeight-35)+'px';
 };

function echartCanvas(){
  var scatterechart= echarts.init(scatterechartDom);
	scatterechart.setOption({
		xAxis:{
			type:'value'
		},
		yAxis:{
			type:'value'
		},
		dataZoom:[
		 {
			type: 'slider',
			xAxisIndex: 0,
			start: 10,
			end: 60
		},
		{
			type: 'inside',
			xAxisIndex: 0,
			start: 10,
			end: 60
		},
		{
			type: 'slider',
			yAxisIndex: 0,
			start: 30,
			end: 80
		},
		{
			type: 'inside',
			yAxisIndex: 0,
			start: 30,
			end: 80
		}],
		series:[
		{
			type:'scatter',//这是散点图
			itemStyle:{
				opacity:0.8
			},
			symbolSize:function(val){
				return val[2]*40;
			},
		data:[["14.616","7.241","0.896"],["3.958","5.701","0.955"],["2.768","8.971","0.669"],["9.051","9.710","0.171"],["14.046","4.182","0.536"],["12.295","1.429","0.962"],["4.417","8.167","0.113"],["0.492","4.771","0.785"],["7.632","2.605","0.645"],["14.242","5.042","0.368"]]
		}
		]
	})
	//当窗口发生变化时
	 window.addEventListener("resize", () => {
		 resizeDom(scatterechartDom); //重置div宽高度
		 scatterechart.resize();//重绘echart图表
	 });
}

使页面一加载echart图表就自适应屏幕大小

window.onload=function(){
	resizeWorldMapContainer(scatterechartDom);
	echartCanvas();
}

到这来就完成啦~
tips: div一开始无需设置固定的宽高度

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 Vue3 的 `ref` 和 `watch` 来实现 ECharts 图表宽高自适应。 首先,在模板中定义一个容器元素,用于包裹 ECharts 图表: ```html <template> <div class="chart-wrapper" ref="chartWrapper"></div> </template> ``` 然后在组件中使用 `ref` 引用该容器元素,并在 `setup` 函数中使用 `watch` 监听容器元素的宽高变化。当容器元素的宽高发生变化时,重新设置 ECharts 图表的容器宽高,并调用 `resize` 方法重新渲染图表。 ```javascript <script lang="ts"> import { defineComponent, ref, watch } from 'vue'; import * as echarts from 'echarts'; export default defineComponent({ name: 'EchartsDemo', setup() { const chartWrapper = ref(null); // 引用容器元素 // 监听容器宽高变化 watch( () => [chartWrapper.value?.clientWidth, chartWrapper.value?.clientHeight], ([width, height]) => { if (!width || !height) return; // 设置 ECharts 容器宽高 myChart.resize({ width, height }); }, { immediate: true } // 立即执行一次 ); let myChart: echarts.ECharts; // 在 mounted 钩子中初始化 ECharts 图表 const mounted = () => { myChart = echarts.init(chartWrapper.value); // ... }; return { chartWrapper, mounted }; }, }); </script> ``` 在上述代码中,我们使用了 `immediate: true` 来使 `watch` 立即执行一次,以便在组件挂载时就能正确设置 ECharts 图表的容器宽高。 最后,在 `mounted` 钩子中初始化 ECharts 图表,可以通过 `myChart.setOption` 方法设置图表的数据和配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值