IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Echarts tooltip.trigger设为‘axis’ 如何自定义 Tooltip的显示 -> 正文阅读

[JavaScript知识库]Echarts tooltip.trigger设为‘axis’ 如何自定义 Tooltip的显示

题记:当echarts折线图中trigger设置为axis时,只想让tooltip自定义显示某一条线上的点的动态信息【Vue3+TS+Vue-Echarts】

1. 问题说明:

1. 现状:如下图所示折线图,当tooltiptrigger属性值设为axis,默认的样式(恕我直言当你以用户视角去看这个提示信息,你也会不经问一句 Are you kidding me?)

//Echarts 中的配置
tooltip: {
  trigger: 'axis',
},

image.png
目标目前想要的效果是鼠标移动到某一条线上,要显示当前点的数据信息
也就是要显示成如下所示的效果:

image.png
一看这个效果聪明的Peiqi童鞋仗着自己凭借Echarts个性化定制图标的经验立马派出了tooltip化妆师 tooltip.formatter来镇场子。木得毛病这是echarts官方御用化妆师,专导各种变形记。
上代码,跑起来发现就是你看到的第一幅图的效果,莫慌先来一记debugger,看看params:

image.png
what? 咋这么条呢?不是说好的移动到哪一条显示哪一条的点信息么(这不怪人家,trigger:'axis’就是当横坐标取某个值,所有的数据节点信息都会显示出来,只不过此时我们不想要这个效果而已)。看着params的样子我要想准确的知道我现在要挑选出鼠标移动到哪一条线上,多读多少少有点儿Peiqi点秋香的意思,嗯。。。

2. 思路:如果线条知道我鼠标移动到了哪一条线,我再结合tooltip.formatter中params数组中找到这条线,不就可以拿出此时这一点的信息么?

3. 解决办法

  • 顺藤摸瓜,借助echarts鼠标事件moseover,

首先要注意的是,要想在线条和区域面积触发事件,首先得配置triggerLineEventtrue,在series的配置中(series-line. triggerLineEvent),

  • 接下来绑定mouseover事件
<v-chart
  :option="option"
  ref="chart"
  class="flex-grow-1 amp-plot"
  @brushEnd="onBrushEnd"
  @mousemove="onMouseOver"
  @mouseout="onMouseOut"
  autoresize
/>
  • 配置tooltip
  tooltip: {
    show: config.showItems.includes('tooltip'),
    triggerOn: 'none',//* 提示框触发的条件,这个配置会覆盖echarts默认的鼠标事件*
    trigger: 'axis',
    enterable: true, // 鼠标是否可进入提示框浮层中,默认为false,如需详情内交互,如添加链接,按钮,可设置为 `true`。
    formatter: (params) => formatterTooltip(params)
  },

官网解释triggerOn配置如下:

triggerOn:‘none’ 时,不在 'mousemove''click' 时触发,用户可以通过 action.tooltip.showTipaction.tooltip.hideTip 来手动触发和隐藏。也可以通过 axisPointer.handle 来触发或隐藏。

  • 配置好tooltip之后,就要回归到点秋香的环节了,哈哈在mouseover事件中搞点儿事情
// 用来缓存当前鼠标事件触发的直线的标记:seriesIndex
let currentHoverIndex: number
function onMouseOver(params) {
   const { seriesIndex, event } = params
   currentHoverIndex = seriesIndex 
   chart.value?.dispatchAction({
     type: 'showTip',
     x: event.offsetX,
     y: event.offsetY,
     position: [event.offsetX, event.offsetY],
   })
 }

来仔细看一下mouseover事件的回调参数,此时明确给出了当前折线的seriesIndex为20,那还犹豫什么朋友,come on! currentHoverIndex已经存储了当前的index,剩下的问题就是攥着index顺利的把秋香找出来吧

image.png

  • 忙了一大圈,可别忘了回家的路,秋香在这儿呢,找到tooltip.formatter,ok找她,just now
//这是之前在tooltip中设置的formatter,找回来
// tooltip.formatter: (params) => formatterTooltip(params)
//所以找吧
function formatterTooltip(params:any) {
    for(let i = 0; i < params.length; i++) {
      if(currentHoverIndex === params[i].seriesIndex) { // 是她,是她,就是她
        const p = params[i]
        return `<table class="tooltip-tab">
        <tr><td>Targe</td><td>X</td><td>Y</td></tr>
        <tr><td>${p.marker}${p.seriesName}</td><td>${p.data [0]}</td><td>${p.data[1]}</td></tr>
        </table>`
      }
    }
  }
  • 到此结束,来再看一下效果图

image.png
请允许我漏出Peiqi的微笑(同时一个声音高叫着)
哎!!!!兄嘚,醒醒,你这tooltip还霸屏呀。。。

  • 最后忘了一件事儿,之前在mouseover 事件中调用了‘showtip’方法来显示自定义tooltip,有个小小的问题就是鼠标移出图表区域后,tooltip一直显示,这显然和习惯相违背,所以虽然显示出来了,也要记得在鼠标离开线条的时候 让它优雅的退场,来看一下谢幕演出:
  • 绑定mouseout事件,分发hideTip事件,亲测来去自如!我也想这么潇洒…
 function onMouseOut() {
    chart.value?.dispatchAction({
      type: 'hideTip'
    })
  }
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-14 09:51:45  更:2022-05-14 09:53:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:30:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码