echarts实现自定义工具栏图标方法,通过点击自定义图标实现datazoom的滚动与停止,代替鼠标移入停止移出恢复滚动

1.说明

在网上查看了很多的代码,本来想通过鼠标移入移出来控制滚动,但是发现即使在echarts图范围内进行鼠标移动也会触发到鼠标移入移出,所以自行通过增加工具栏的自定义图标方法来实现功能。为了方便理解,通过echarts官方实例进行改动,在toolbox中添加自定义的两个按钮(开始滚动和停止滚动),点击按钮可以实现控制echarts图的滚动与停止。本例代码中,设置了x轴数据超过4个时,实现每2秒进行滚动显示,如果x轴数据不超过4个时,即不进行滚动,切在echarts图的右上方工具栏也不会出现开始滚动及停止滚动这两个按钮。

2.实现代码

<!DOCTYPE html>
<html>

	<head>
		<meta charset="utf-8" />
		<title></title>
		<script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
		<script type="text/javascript" src="js/echarts.js"></script>
	</head>

	<body>
		<div id="status" style="height:400px;width:400px;"></div>
	</body>
	<script>
		var mychart = echarts.init(document.getElementById('status'));
		var xArr = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
		var option = {
			color: ['#3398DB'],
			tooltip: {
				trigger: 'axis',
				axisPointer: { // 坐标轴指示器,坐标轴触发有效
					type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
				}
			},
			grid: {
				left: '3%',
				right: '4%',
				bottom: '10%',
				containLabel: true
			},
			xAxis: [{
				type: 'category',
				data: xArr,
				axisTick: {
					alignWithLabel: true
				}
			}],
			yAxis: [{
				type: 'value'
			}],
			toolbox: {
				right: 30,
				feature: {
					magicType: {
						show: true,
						type: ['line', 'bar']
					},
					restore: {
						show: false
					},
					saveAsImage: {
						show: true
					}
				}

			},
			dataZoom: {
				show: true,
				realtime: true,
				startValue: 0,
				endValue: 3,
			},
			series: [{
				name: '直接访问',
				type: 'bar',
				barWidth: '60%',
				data: [10, 52, 200, 334, 390, 330, 220]
			}]
		};
		if(xArr.length > 4) {
			debugger;
			var a;
			option.toolbox.feature.myTip2 = {
				show: true,
				title: '开始滚动',
				icon: 'image://' + '/test/img/start.png',
				onclick: function() {
					clearInterval(a);
					a = setInterval(function() {
						// 每次向后滚动一个,最后一个从头开始。
						if(option.dataZoom.endValue == xArr.length - 1) {
							option.dataZoom.endValue = 3;
							option.dataZoom.startValue = 0;
						} else {
							option.dataZoom.endValue = option.dataZoom.endValue + 1;
							option.dataZoom.startValue = option.dataZoom.startValue + 1;
						}
						mychart.setOption(option);
					}, 2000);

				}
			}
			option.toolbox.feature.myTip3 = {
				show: true,
				title: '停止滚动',
				icon: 'image://' + '/test/img/stop.png',
				onclick: function() {
					clearInterval(a);
				}
			}
			a = setInterval(function() {
				// 每次向后滚动一个,最后一个从头开始。
				if(option.dataZoom.endValue == xArr.length - 1) {
					option.dataZoom.endValue = 3;
					option.dataZoom.startValue = 0;
				} else {
					option.dataZoom.endValue = option.dataZoom.endValue + 1;
					option.dataZoom.startValue = option.dataZoom.startValue + 1;
				}
				mychart.setOption(option);
			}, 2000);
		}
		mychart.setOption(option);
	</script>

</html>

3.实现效果

4.打包代码(设置了粉丝可下载)

https://download.csdn.net/download/qq_27387133/12805786  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MrZhouGx

觉得对你有用的话可以支持一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值