echarts自动滚动效果(鼠标移入停止滚动,移开继续滚动)

echarts自动滚动效果(鼠标移入停止滚动,移开继续滚动)

(希望能帮助大家实现ecarts的动画效果)
1.效果图:
2.图表建立

this.option = {
        grid: {
          left: "0%",
          right: "3%",
          bottom: "0%",
          top: "5%",
          containLabel: true
        },
        tooltip: {
          trigger: "axis",
          axisPointer: {
            type: "shadow"
          },
          padding: 10,
          backgroundColor: "rgba(0, 0, 0, .8)"
        },
        dataZoom: [
          {
            // yAxisIndex: 0,
            show: false,
            type: "slider", // 这个 dataZoom 组件是 slider 型 dataZoom 组件
            startValue: 0, // 从头开始。
            endValue: this.end // 一次性展示五个。
          }
        ],
        xAxis: {
          axisLabel: {
            // rotate:45,
            textStyle: {
              color: "#fff",
              fontSize: 12
            },
            formatter: function(value, index) {
              return value.replace(/(.{4})/g, "$1\n");
            }//控制x轴名称过长,实现4字折行
          },
          axisTick: {
            show: false
          },
          axisLine: {
            show: false
          },
          data: this.dataList.xAxis
        },
        yAxis: {
          type: "value",
          axisLine: {
            show: false
          },
          axisTick: {
            show: false
          },
          splitLine: {
            show: false,
            lineStyle: {
              color: "#fff"
            }
          },
          axisLabel: {
            textStyle: {
              color: "#fff",
              fonSize: 12
            }
          }
        },
        series: [
          {
            type: "bar",
            name: "人口",
            barWidth: 30,
            itemStyle: {
              normal: {
                color: "#1890FF"
              }
            },
            label: {
              //图形上的文本标签
              normal: {
                show: true,
                position: "top",
                textStyle: {
                  color: "#fff",
                  fontStyle: "normal",
                  fontFamily: "微软雅黑",
                  fontSize: 13
                }
              }
            },
            data: this.dataList.seriesData
          }
        ]
      }

3.基本思路分析:echarts 实现自动滚动效果,实现思路是利用echarts中option中的dataZoom属性,用定时器控制dataZoom中endValue和startValue变化,每次dataZoom变化都需要setOption重新渲染图表。

 dataZoom: [
      {
        // yAxisIndex: 0,//实现y轴滚动
        show: false,
        type: "slider", // 这个 dataZoom 组件是 slider 型 dataZoom 组件
        startValue: 0, // 从头开始。
        endValue: this.end // 
      }
    ],

鼠标移入是停止定时器,离开继续定时器。
(注:移入是选中图标中的项,而不是图表区域)
4.定时器控制dataZoom代码:

      this.chart.setOption(this.option)
      this.chart.on('mouseover',this.stop)
      this.chart.on('mouseout',this.goMove)
      this.autoMove()
    },
    //自动滚动
    autoMove(){
       //this.dataList.seriesData为柱形图数据
         this.timeOut=setInterval(()=>{
        // clearInterval(this.timeOut)
        // 每次向后滚动一个,最后一个从头开始。
        // if(this.stopMove){ return }
        if (Number(this.option.dataZoom[0].endValue) === this.dataList.seriesData.length-1) {
             this.option.dataZoom[0].endValue = this.end;
             this.option.dataZoom[0].startValue = 0;
        } else {
             this.option.dataZoom[0].endValue =  this.option.dataZoom[0].endValue + 1;
             this.option.dataZoom[0].startValue =  this.option.dataZoom[0].startValue + 1;
        }
        this.chart.setOption(this.option)
    }, 3000);
    },
    //停止滚动
    stop(){
      console.log(11)
      // this.stopMove=true
      clearInterval(this.timeOut)
    },
    //继续滚动
    goMove(){
      console.log(333333)
      //  this.stopMove=false
       this.autoMove()
    }

5.详细实例gitee地址
echarts自动滚动效果(鼠标移入停止滚动,移开继续滚动)_第1张图片

你可能感兴趣的:(前端开发之路分享)