echarts 阴影部分点击事件

需求:折线图hover区域可以被点击

分析:

  1. 折线图中echarts的click事件是作用于转折点上,点击hover阴影区时不会呈现效果
  2. 通过查阅资料,发现可以使用getZr()来监听整个画布事件,但getZr()属于私有API存在过多不稳定因素(当然使用它可以实现该需求)
  3. 通过 ref 或者 echarts 中 getDom() 获取 ECharts 实例容器的 dom 节点,通过addEventListener对click事件进行监听
  4. 通过2,3以上两种方式获取鼠标位移坐标,判断坐标是否在grid上,转换像素坐标为逻辑坐标系

代码实现:

<script setup lang="ts">
 import { ref, onMounted, onBeforeUnmount } from 'vue'
 import * as echarts from 'echarts'

 const clickHover = (params: any) => {
   // 获取鼠标位移
   const pointInPixel = [params.offsetX, params.offsetY]
   console.log('pointInPixel', pointInPixel)
   // 判断坐标是否在grid上
   if (chart.containPixel('grid', pointInPixel)) {
     // 转换像素坐标为逻辑坐标系上的点
     let xIndex = chart.convertFromPixel({ seriesIndex: 0 }, pointInPixel)[0]
     console.log('data', option.series[0].data[xIndex])
   }
  }

 let chart: any
 const refChart = ref<HTMLElement | undefined>(undefined)

 onMounted(() => {    
   chart = echarts.init(refChart.value!)
   // chart.getZr().on('click', clickHover)
   refChart.value?.addEventListener('click', clickHover)
 })
 onBeforeUnmount(() => {
   refChart.value?.removeEventListener('click', clickHover)
 })
</script>
<template>
   <div class="chart" ref="refChart"></div>
</template>
<style></style>

效果展示:

 参考资料:javascript - 关于echarts的getZr这个Api,这个Api怎么在官方文档看不到? - SegmentFault 思否

Documentation - Apache ECharts

结语:如果是点击x轴或者y轴,可以通过修改 containPixel 和 convertFromPixel中的参数实现,欢迎大家尝试分享~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值