Vue+echarts,tooltip下的formatter方法自定义提示框

项目需求

1.不同的判断条件对应不同的echarts折线图

2.当判断条件为title===颗粒度时,提示框里面的内容要根据返回的值判断来显示对应的文字

3.当判断条件为元素时,是两条折线图,提示框里要有两条内容

效果展示

 

用到tooltip下面的formatter,参数value就是当前横坐标对应的echarts图的数据,它是一个数组,是按series的数据的顺序来的。formatter函数return的东西就是你的tooltip的内容。里面可以是标签文本,想要什么样子的tooltip框,就组什么样子的标签以及内容就好了。 

代码展示 

tooltip: {
          trigger: 'axis',
          borderWidth: 0, // 去除数据提示框默认的边框
          axisPointer: {
            lineStyle: { // 设置hover时竖线样式
              color: {
                type: 'linear',
                x: 0,
                y: 0,
                x2: 0,
                y2: 1,
                global: false // 缺省为 false
              }
            }
          },
          backgroundColor: 'transparent',  // 去除数据提示框默认的背景
          formatter: (value) => {
            let dom = null;
            if (title !== '颗粒度'&& title !== '元素') {
              dom = `<div style="background-color: #666;padding: 15px;display: inline-block;border-radius: 8px;">
                <span style="color: #fff;">${value[0].axisValue}</span><br>
                <span style="display: flex;align-items: center;">
                  <span style="width: 10px;height: 10px;background-color: red; border-radius: 50%;"></span>
                  <span style="color: #fff;margin-left: 5px;">${value[0].seriesName}:${value[0].value}${this.name.replace('单位:', '')}</span>
                </span>
              </div>`  
            } else if(title === '颗粒度'){
              dom = `<div style="background-color: #666;padding: 15px;display: inline-block;border-radius: 8px;">
                <span style="color: #fff;">${value[0].axisValue}</span><br>
                <span style="display: flex;align-items: center;">
                  <span style="width: 10px;height: 10px;background-color: red; border-radius: 50%;"></span>
                  <span style="color: #fff;margin-left: 5px;">${value[0].value === "0.8" ? "异常" : "正常"}</span>
                </span>
              </div>`
            }else {
              let str = ""
              let color = ["red","black"]
              value.map((item,index) => {
                str =str+` <span style="display:flex;align-items: center">
                    <span style="width: 10px;height: 10px;background-color: ${item.seriesName === "铁元素" ? color[0] : color[1] }; border-radius: 50%;"></span>
                    <span style="color: #fff;margin-left: 5px;" >${item.seriesName}:${item.value}${this.name.replace('单位:', '')}</span>
                  </span>`
              })
              dom =  `
              <div style="background-color: #666;padding: 15px;display: inline-block;border-radius: 8px;">
                <span style="color: #fff;">${value[0]?.axisValue}</span><br>
                ${str} 
                </div>
                `
            }
            return dom;
          }
        },

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值