echarts 适配大屏

echarts 自适应rem

当使用px2rem插件把px转换成rem单位时 层叠样式表中px可以转换成rem 单位 但是echarts图表中的单位并未发生转换,下面是解决方案,并做一记录 :

  1. 添加fontSize函数
    在图表配置的页面添加下方的转换函数,其中以3840为设计稿的宽度(记得根据实际情况进行修改)。
function fontSize(res) {
	// 获取文档宽度 
	let docEl = document.documentElement,
	clientWidth = window.innerWeight ||
	document.documentElement.clientWidth ||
	document.body.clientWidth;
	// 未获取到宽度 返回undefined
	if(!clientWidth) return;
	//根据文档宽度和设计稿的宽度 获取单位转换比例
	let fontSize = clientWidth / 3840
	//返回大小
	return res * fontSize; 
}

2.使用fontSize函数实现图表的数据转换
所有图表配置中涉及尺寸数据的,都要用fontSize进行转换,包括定位、字体大小、宽度、内外边距
此时无需计算,只需要调用fontSize函数即可完成转换

 legend: [
	{
		data: ["人"],
		top: fontSize(10),
		right: fontSize(320),
		itemWidth: fontSize(14),
		textStyle: {
			color: "#fff",
			fontSize: fontSize(20),
		}
	}
]
  1. 同时监听屏幕尺寸变化,重绘图表即可
import echarts from "echarts";
    let option = {…… 图表配置 ……}
    let chart = echarts.init(this.$refs.myChart);
    chart.setOption(option);
    // 添加窗口大小改变监听事件,当窗口大小改变时,图表会重新绘制,自适应窗口大小
    window.addEventListener("resize", function() {
      chart.resize();
    });

Echarts适配主要涉及字体小和图表的自适应问题。为了实现字体小的适配,可以使用fontSize函数对所有图表配置中的尺寸数据进行转换,包括定位、字体小、宽度、内外边距等。通过调用fontSize函数,可以在不需要进行计算的情况下完成尺寸的转换。同时,为了实现图表的自适应,可以监听幕尺寸变化,当窗口小改变时,重新绘制图表,使其适应新的窗口小。这可以通过添加窗口小改变的监听事件,并调用chart.resize()方法来实现。 在具体实践中,可以使用echarts库来初始化图表,并传入相应的配置项。例如,使用echarts.init方法初始化一个图表实例,并传入配置项option,然后通过调用setOption方法设置图表的配置。接着,添加窗口小改变的监听事件,当窗口小改变时,调用chart.resize()方法重新绘制图表,以适应新的窗口小。 此外,为了解决刷新页面后Echarts文字和格格不入的问题,可以采用暴露一个方法并引入到Echarts组件中的方式来解决。例如,可以定义一个convertPx方法,用于计算canvas字体小的适配,其中参数px表示字体小。通过将该方法引入到Echarts组件中,可以实现文字的适配,使其与图表整体风格相符。 综上所述,针对Echarts适配问题,需要进行字体小的转换和图表的自适应处理。使用fontSize函数对尺寸数据进行转换,监听窗口小改变事件并重绘图表,以及通过暴露一个方法来解决文字适配问题,可以实现Echarts适配。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [echarts 适配](https://blog.youkuaiyun.com/TomNumber/article/details/127192457)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [项目,如何适配echarts文字问题,以及Echarts的自适应问题](https://blog.youkuaiyun.com/m0_58147586/article/details/121598019)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值