Echarts 提示组件

1.开启指示器

  • 默认情况下,指示器是关闭状态,如果需要开启,直接配置tooltip字段即可
var option = {
    tooltip:{},
}

2.指示器的触发类型

  • 触发类型的字段为trigger,可选值如下
可选值 说明
'item' 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用
'axis' 坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。
'none' 什么都不触发
  • 实际使用过程中,这个字段无需手动指定,图表会自动匹配当前的图表类型

3.设定指示器的模式

  • 指示器的模式分为4种,通过tooltip.axisPointer.type进行配置
类型 说明
'none' 无指示器,默认
'line' 直线指示器,适用于折线图
'shadow' 阴影指示器,适用于柱形图
'cross' 十字准星指示器
  • 指示器的模式一般用在坐标轴图表中,饼图这种图表一般不需要,如图:
    (1)none:没有指示器

(2)line:直线指示器,线条的样式通过tooltip.axisPointer.lineStyle进行配置

(3)'shadow':阴影指示器,阴影的样式通过tooltip.axisPointer.shadowStyle进行配置

(4)'cross':十字准星指示器,能看到当前位置对应的X轴和Y轴的位置,准星的样式通过tooltip.axisPointer.crossStyle进行配置

4.文本值格式化(从 v5.3.0 开始支持)

  • valueFormatter:tooltip 中数值显示部分的格式化回调函数,但是不能针对特定的系列做处理,如果有双Y轴时不适用
valueFormatter: function(value){
     return value + '%'
}

5.封装提示组件

默认的提示组件一般预先设定好了一定的格式,例如数据颜色,数据名称和值等等,如图:

如果想要个样式一样,但是数据可以自定义的组件,就需要进行封装,封装需要做到以下两点:

  • 布局:每行分为3个元素,分为左中右3列,左侧圆点,中间系列名称,右侧数值,此外还有颜色,间距等等
  • 数据:数据需要动态获取,包括系列名称,当前数值,当前颜色,当前X轴的值

CSS代码如下:

<style>
    .tooltip-title{
        font-size:14px;
    }
    .tooltip-item{
        display: flex;
        align-items: center;
        justify-content: space-between;
        position: relative;
        padding:0;
    }
    .tooltip-item .tooltip-round{
        position: absolute;
        left: 0;
        top: 50%;
        transform: translateY(-50%);
        width: 10px;
        height: 10px;
        border-radius: 50%;
        content: "";
        /* background-color: #fff; */
    }
    .tooltip-item .tooltip-left{
        margin:0 20px 0 15px;
        font-size: 12px;
    }
    .tooltip-item .tooltip-right{
        font-size: 12px;
        color: black;
        font-weight: bold;
    }
</style>

js代码;

setToolTip(params){
    //当前分类名称
    var html = `<div class="tooltip-title">${params[0].axisValue}</div>`
    for(var i=1;i<params.length;i++){
          //数据名称
          var name = params[i].seriesName
          //颜色
          var color = params[i].color
          //数值
          var value = params[i].value
          //特定的数值转换(可选)
          if(name.includes('率')){
                value += '%'
           }
              html += (`<div class="tooltip-item"><span class="tooltip-round" style="background-color: ${color};"></span><span class="tooltip-left">${name}</span><span class="tooltip-right">${value}</span></div>`)
          }
         //包裹一层外容器
         html = `<div class="tooltip-box">${html}</div>`
         return html
}

调用:

tooltip:{
    trigger:"axis",
    formatter:function(params){
           //this=>window that=vm
           return that.setToolTip(params)
    }
},
posted @ 2021-05-27 10:07  ---空白---  阅读(412)  评论(0编辑  收藏  举报