美文网首页
Echarts的轮播实现方案

Echarts的轮播实现方案

作者: baxiamali | 来源:发表于2021-02-03 11:48 被阅读0次

需求:饼图实现轮播;
场景:电视大屏监控,自动高亮数据,有动画效果,增强页面可视性;
实现:

  1. 官网示例
app.currentIndex = -1;

setInterval(function () {
    var dataLen = option.series[0].data.length;
    // 取消之前高亮的图形
    myChart.dispatchAction({
        type: 'downplay',
        seriesIndex: 0,
        dataIndex: app.currentIndex
    });
    app.currentIndex = (app.currentIndex + 1) % dataLen;
    // 高亮当前图形
    myChart.dispatchAction({
        type: 'highlight',
        seriesIndex: 0,
        dataIndex: app.currentIndex
    });
    // 显示 tooltip
    myChart.dispatchAction({
        type: 'showTip',
        seriesIndex: 0,
        dataIndex: app.currentIndex
    });
}, 1000);

主要运用dispatchAction,主动触发事件。
ECharts 中的事件有两种,一种是鼠标事件,在鼠标点击某个图形上会触发,还有一种是 调用 dispatchAction 后触发的事件。每个 action 都会有对应的事件,具体见 actionevents 的文档。

  1. 官网进阶
    官网示例中,触发了高亮和tooltip,此时,用户鼠标悬停,仍然有效。但是如果是饼图中间显示label的话,就会出现用户鼠标悬停的时候label重合。需要进一步处理。
      this.relativeDeviceBar.on('mouseover',(param)=>{
                if(relativeDeviceBarInterval){ //取消轮播
                    clearInterval(relativeDeviceBarInterval);
                    relativeDeviceBarInterval = null;
                }
                this.relativeDeviceBar.dispatchAction({ //取消高亮最后一个主动高亮部分
                    type: 'downplay',
                    seriesIndex: 0,
                    dataIndex: lastIndex,
                });
            });
            this.relativeDeviceBar.on('mouseout',()=>{
                 //重新开始轮播代码
            });

主要用到了ECharts 中的鼠标事件事件:mouseovermouseout

  1. 进一步进阶
    到了这一步,初步完成了需求,但是发现用户鼠标悬停前的那一块,再也无法高亮,查看了下安防之前大屏的地图轮播,也有相同的问题。
    解决方案:
this.relativeDeviceBar.on('mouseover',(param)=>{
                if(relativeDeviceBarInterval){
                    clearInterval(relativeDeviceBarInterval);
                    relativeDeviceBarInterval = null;
                }
                this.relativeDeviceBar.dispatchAction({
                    type: 'downplay',
                    seriesIndex: 0,
                    dataIndex: lastIndex,
                });
                if(param.dataIndex){ //获取用户悬停的dataIndex,进行高亮
                    this.relativeDeviceBar.dispatchAction({
                        type: 'highlight',
                        seriesIndex: 0,
                        dataIndex: param.dataIndex,
                    });
                    lastIndex = param.dataIndex;
                }
            });

优化完成。

相关文章

  • Echarts的轮播实现方案

    需求:饼图实现轮播;场景:电视大屏监控,自动高亮数据,有动画效果,增强页面可视性;实现: 官网示例 主要运用dis...

  • UIScrollView实现循环轮播Banner(自定义Cell

    实现循环轮播图的各种方案 轮播图的实现方案有很多种,大体上分为CollectionView和ScrollView实...

  • 4.7淘宝轮播图

    淘宝轮播图也是一个无限轮播的最好列子之一吧 它也是有多种实现方案 这种方案就是 这种方案就是遍历多次的了 首先1获...

  • 实现Echarts地图和自动轮播

    1.想要实现地图以及自动轮播,必须要下载插件,这三个插件必不可少 2.然后就是给图表一个容器,也就是div 3.接...

  • echarts tooltip自动轮播 高亮显示

    柱状图tooltip自动轮播 let myRank= this.$echarts.init(this.$refs....

  • iOS轮播图

    用collectionView自定义实现一个无限滚动的轮播图 这里主要说一下无限轮播的核心思路和解决方案 我先以s...

  • 任务27 - jquery实战 - 轮播

    代码 实现如下轮播效果 展示、代码 实现上述轮播效果,在一个页面有三个轮播 展示、代码 实现如下无限循环滚动轮播效...

  • swift轮播图的实现-UIScrollView

    目标 :UIScrollView+三UIImageView的轮播图实现 原理:利用UIScrollView实现轮播...

  • Cannot read properties of undefi

    问题所在:this.$echarts 为 undefined解决方案:1,查看echarts版本pakeage.j...

  • 轮播图心得

    轮播图 写轮播图之前我们要认识到几个问题:一、什么是轮播图?二、怎么实现轮播效果?三、轮播图还有什么小功能可以实现...

网友评论

      本文标题:Echarts的轮播实现方案

      本文链接:https://www.haomeiwen.com/subject/mbuptltx.html