实现echarts图表响应式效果

echarts图表响应式

最近应项目要求需要做响应式的echarts图表,开始在网上找了各种资源都没有找到如何操作。最后还是靠别人指点做出来的, 其实多看看文档也能明白,不过没那个耐心,哈哈。不多说上干货!下面先举个栗子!
在这里插入图片描述
直接上代码吧!!

function echart_seven(date){
	var data = { "bieshu":[120, 132, 101, 134, 90, 230, 210],
				"gongyu":[220, 182, 191, 234, 290, 330, 310],
				"zhuzhai":[150, 232, 201, 154, 190, 330, 410],
				"legend":[
				{name:'平均值',
				icon:'pin'//修改图例样式
				},
				{name:'2017年',
				icon:'pin'
				},
				{name:'2018年',
				icon:'pin'
				}
				],
				"date":['1','2','3','4','5','6','7']
		}
	//中间第二个统计图开始
	var myChart7 = echarts.init(document.getElementById('mainCenterBottom1'));
	var	option = {
				color:['#FF6968','#50DAF4','#EEDA2D'],//图例颜色设置
		    tooltip : {
		        trigger: 'axis',
		        textStyle:{
			               	fontSize :setFontSize(20),
			               	align:'left'
			               },
		    },
		    legend: {
		    	itemWidth:setFontSize(22),
	        itemHeight:setFontSize(12),
		    	textStyle:{
		        	color:'#fff',
		        	fontSize :setFontSize(16)
		       },
		        data:data.legend
		    },
		    //这一行是干货grid就代表网格线。只要把宽高设置成百分比就可以了,位置可以通过y值y2值x值和x2值调试。
		    grid: {show:'true',borderWidth:'0',height:"60%",width:"80%",y:"20%",x:"12%"},
		    calculable : true,
		    xAxis : [
		        {
		        	splitLine:{
                    	show:false
                	},
		            type : 'category',
		            boundaryGap : false,
		            axisLine: {show:false},
		            axisTick: {show:false},
		            data : data.date,
			        	axisLabel : {
	                            formatter: '{value}',
	                            textStyle: {
	                                color: '#fff',
	                                fontSize :setFontSize(16)
	                            }
	                        }
		        }
		    ],
		    yAxis : [
		        {		splitLine:{
		        			lineStyle:{
				            		width:setFontSize(1.5),
				            		color:'#fff'
				            		}
		        		},
		            type : 'value',
	                axisLine: {show:false},
	                axisTick: {show:false},
	                axisLabel : {
	                            formatter: '{value}',
	                            textStyle: {
	                                color: '#fff',
	                               fontSize :setFontSize(16)
	                            }
	                        }
		        }
		    ],
		    series : [
		        {
		            name:'平均值',
		            type:'line',
			          data:data.bieshu,
			          symbolSize: setFontSize(10),
			          itemStyle : { 
		            	normal:{
		            		lineStyle:{
		            		//color:'#50DAF4'//给线条设置颜色
		            		width:setFontSize(2)
		            		}
		            	}
	            	},
			       },
		        {
		            name:'2017年',
		            type:'line',
		            symbolSize: setFontSize(10),
		            itemStyle : { 
		            	normal:{
		            		lineStyle:{
		            		//color:'#50DAF4'//给线条设置颜色
		            		width:setFontSize(2)
		            		}
		            	}
	            	},
		            data:data.gongyu
            	
		        },
		        {
		            name:'2018年',
		            type:'line',
		            symbolSize: setFontSize(10),
		            itemStyle : { 
		            	normal:{
		            		lineStyle:{
		            		//color:'#EEDA2D'//给线条设置颜色
		            		width:setFontSize(2)
		            		}
		            	}
	            	},
		            data:data.zhuzhai
		        }
		    ]
		};
		 myChart7.setOption(option);
		 window.addEventListener("resize",function(){
		    myChart7.resize();
		});
	}

以上就是直角系echarts响应式图的实现,没事儿可以多看看官方文档还是介绍的比较详细,至于其他的圆环图,饼图响应式可以通过series下面的radius : [‘100%’, ‘100%’]和center: [‘100%’,‘100%’]来调试比例。对了echarts字体是不能通过设置来实现响应式的。我的处理办法如下

 //echarts字体大小设置方法
 setFontSize = function(size){
 	var windowWidth = document.body.clientWidth
 if(windowWidth>1024 && windowWidth<4000){
 		return size*windowWidth/1920;
 	}else if(windowWidth<=800){
 		return size*windowWidth/600;
 	}else if(windowWidth<1024){
 		return size*windowWidth/800;
 	}else if(windowWidth==1024){
 		return size*windowWidth/1366;
 	}else if(windowWidth>=4000){
 		return size*windowWidth/1600;
 	}
 }

在echarts设置字体的时候采用setFontSize (数字)就行了。代码写的有点low没有优化,根据自己的实际情况来就行了。继续去爬echarts的坑,see you!!

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Echarts 是一款优秀的开源图表库,支持多种类型的图表和丰富的交互功能。实现 Echarts 图表响应式布局可以通过以下方式: 1. 使用百分比布局 在 Echarts 图表的容器元素中,可以使用百分比来设置宽度和高度,例如: ```html <div id="chart-container" style="width: 100%; height: 100%;"></div> ``` 这样设置可以使图表容器随着父元素的大小变化而自适应调整大小。 2. 监听窗口大小变化 可以通过监听窗口大小变化的事件,动态调整图表容器的大小,从而实现响应式布局。例如: ```javascript var myChart = echarts.init(document.getElementById('chart-container')); function resizeChart() { myChart.resize(); } window.addEventListener('resize', resizeChart); ``` 以上代码中,使用 `echarts.init` 方法初始化图表,并定义了一个 `resizeChart` 函数用于调整图表的大小。然后,通过监听窗口的 `resize` 事件,调用 `resizeChart` 函数实现图表容器的大小调整。 3. 使用 Echarts响应式配置项 Echarts 提供了一些响应式配置项,可以根据不同的屏幕大小或容器大小,自动调整图表的样式和布局。例如: ```javascript option = { // 响应式配置项 responsive: { // 在宽度小于 600 时,自动将 legend 放在底部 600: { legend: { orient: 'horizontal', bottom: 0, itemGap: 10 } }, // 在宽度大于等于 600 时,自动将 legend 放在右侧 1200: { legend: { orient: 'vertical', right: 0, top: 0, itemGap: 20 } } }, // 其他图表配置项 ... }; ``` 以上代码中,使用 `responsive` 配置项定义了两个屏幕宽度阈值:`600` 和 `1200`,分别对应屏幕宽度小于 600 和大于等于 600 时的图表样式。在每个阈值中,可以配置需要自动调整的图表组件的样式和位置等参数。 以上是实现 Echarts 图表响应式布局的一些方法,可以根据实际需求选择合适的方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值