echartsECharts--自定义tooltip属性

夏祯
2023-12-01

最近在做项目中用到了雷达图,需要用到自定义tooltip 查了相关资料。

一般的tooltip提供的简单的功能往往无法满足我们实际开发需要 ,那就动起手来 baidu吧

提示框浮层内容格式器,支持字符串模板和回调函数两种形式。
字符串模板,就是把相对应的模板变量进行拼串
formatter: ‘{b0}: {c0}
{b1}: {c1}’
2.回调函数

// 回调函数格式
(params: Object|Array, ticket: string, callback: (ticket: string, html: string)) => string
主要取用第一个参数 params 是 formatter 需要的数据集

{
    componentType: 'series',
    // 系列类型
    seriesType: string,
    // 系列在传入的 option.series 中的 index
    seriesIndex: number,
    // 系列名称
    seriesName: string,
    // 数据名,类目名
    name: string,
    // 数据在传入的 data 数组中的 index
    dataIndex: number,
    // 传入的原始数据项
    data: Object,
    // 传入的数据值
    value: number|Array,
    // 数据图形的颜色
    color: string,

    // 饼图的百分比
    percent: number,

}
自定义formatter函数  这里可以返回自己需要的html片段
formatter: function(params) {
  var result = ''
  var dotHtml = '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:#1197b8"></span>'
  params.forEach(function (item) {
    result += item.axisValue + "</br>" + dotHtml + item.data
  })
  return result
}

给提示加单位;提示内容显示不全时自定义位置,通过position属性设置


tooltip:{
              position: function(point, params, dom, rect, size) {
            //其中point为当前鼠标的位置,size中有两个属性:viewSize和contentSize,分别为外层 
               div和tooltip提示框的大小
                 var x = point[0];//
                 var y = point[1];
                 var viewWidth = size.viewSize[0];
                 var viewHeight = size.viewSize[1];
                 var boxWidth = size.contentSize[0];
                 var boxHeight = size.contentSize[1];
                 var posX = 0;//x坐标位置
                 var posY = 0;//y坐标位置
 
                 if (x < boxWidth) {//左边放不开
                        posX = 5;
                 } else {//左边放的下
                        posX = x - boxWidth;
                 }
 
                 if (y < boxHeight) {//上边放不开
                         posY = 5;
                 } else {//上边放得下
                            posY = y - boxHeight;
                 }
                        return [posX, posY];
                 },
              formatter:function(params)
                {                        
                    var relVal = "";
                 //  for (var i = 0, l = params.length; i < l; i++) {//有多种柱子时,用循环
                         relVal +=  params.seriesName +'<br/>'+params.marker 
                                  +params.name+ ' : ' + params.value+"元/吨公里";
                     //   }
                        return relVal;
                  }
 },


 类似资料: