Echarts文字大小自适应,案例详解

  • Post author:
  • Post category:其他


用echarts做可视化大屏的时候,图表大小可以自适应,但是图表里面文字的大小不能自适应。有一种解决方法就是采用

rem

为单位,根据屏幕的宽度调整html的

font-size

在这里插入图片描述

<div id="qualres" style="width:100%; height:100%; padding:1rem"></div>

先定义一个函数

fontSize()

,用来获取屏幕宽度并计算比例,在需要设置字体的地方调用这个函数即可。

getEcharts(){
	//获取屏幕宽度并计算比例
	function fontSize(res){
    	let clientWidth = window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth;
        if (!clientWidth) return;
        let fontSize = 100 * (clientWidth / 1920);
        return res*fontSize;
	}
    var dom = document.getElementById('qualres');
    var myChart = echarts.init(dom);
    var option = {
    	title: {
        	text: '近七天内访问量和下载量',
          	subtext: '访问次数(次)',
          	itemGap: 10,
          	textStyle: {
          		//调用fontSize()方法,此时fontSize为18px
            	fontSize: fontSize(0.18)
          	},
          	subtextStyle: {
            	color: 'gray',
            	fontSize: fontSize(0.12)
          	}
		},
        tooltip: {
        	trigger: 'axis',
        },
        legend: {
	        data: ['访问量', '下载量'],
            right: 20,
            itemGap: 30,
            icon: 'circle',
            textStyle: {
            	fontSize: fontSize(0.14)
            }
		},
        grid: {
        	top: '60px',
          	left: '1%',
          	right: '1%',
          	bottom: '0',
          	containLabel: true
        },
        xAxis: {
            type: 'category',
            boundaryGap: false,
            data: ['12.01', '12.02', '12.03', '12.04', '12.05', '12.06', '12.07'],
            axisTick:{ 
            	show: false,
            },
            axisLine: { show: false },
            axisLabel: {
            	color: '#666666',
            	margin: 10,
            	fontSize: fontSize(0.12)
            },
            boundaryGap: true,
        },
        yAxis: {
            type: 'value',
            axisTick:{ show: false },
            axisLine: { show: false },
            axisLabel: {
            	color: '#666666',
            	margin: 10,
            	fontSize: fontSize(0.12)
            },
            interval:10,
            min:0,
            max:40,
        },
        series: [{
            name: '访问量',
            type: 'line',
            symbol: 'circle',
            smooth: true,
            data: [19, 23.5, 32, 30, 26, 32, 27],
            color: 'rgb(251,168,46)',
        },{
            name: '下载量',
            type: 'line',
            symbol: 'circle',
            smooth: true,
            data: [11, 10, 9, 15.5, 18, 17, 13],
            color: 'rgb(30,135,240)',
        }]
	}
	//视口调整后重新渲染echart图表
	window.onresize = function () {
    	myChart.resize()
    };
    myChart.setOption(option);
},

echart图表本身提供了一个

resize()

函数,当浏览器发生

resize

事件时,让其触发echart的resize()函数,可以重绘canvas,实现图表自适应。

此时,字体的大小并不能随着图表自适应(必须刷新页面),需要设置监听事件

addEventListener

,在浏览器窗口发生变化时重新执行图表方法:

mounted(){    
    this.getEcharts();
    window.addEventListener('resize',()=>{
    	this.getEcharts();
    })
  },



版权声明:本文为jingjing217原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。