移动端echarts设置dataZoom之后,滚动时隐藏tooltip
需求
echarts设置了datazoom同时也设置了tooltip的时候,左右滚动时候就会这样:
在这里插入图片描述
产品提出需求说要滚动的时候隐藏tooltip,要这样:
在这里插入图片描述
查阅了相关解决办法:https://blog.csdn.net/gdutRex/article/details/112532326
其中还会有一个问题,就是在滑动的时候鼠标也会点击,点击了就会出现tooltip
首先,你需要在 echarts 的初始化配置中为 dataZoom 设置 silent 为 true,以防止在滑动过程中触发 click 事件。其次,你可以使用 dataZoom 的事件监听来控制 tooltip 的显示和隐藏
let chart = echarts.init(document.getElementById('chart'));
let option = {
// your chart option
tooltip: {
show: true
// other tooltip options
},
dataZoom: [
{
type: 'slider',
xAxisIndex: 0,
start: 10,
end: 60,
silent: true // 防止在滑动过程中触发 click 事件
},
// other dataZoom options
],
// other chart options
}
chart.setOption(option);
let isUserDragging = false; // 用户是否正在拖动的标记
chart.on('datazoom', function (params) {
isUserDragging = true; // 用户开始拖动
chart.dispatchAction({
type: 'hideTip'
});
});
chart.getZr().on('mouseup', function(){
isUserDragging = false; // 用户结束拖动
});
chart.on('mousemove', function (params) {
if(!isUserDragging){
chart.dispatchAction({
type: 'showTip',
seriesIndex: params.seriesIndex,
dataIndex: params.dataIndex
});
}
});
在这段代码中,我们通过监听 'datazoom' 事件来设置 isUserDragging 标志,并隐藏 tooltip。然后,在 'mousemove' 事件中,我们根据 isUserDragging 标志决定是否显示 tooltip。同时,在 'mouseup' 事件中我们标记 isUserDragging 为 false,表示用户结束了拖动
这个方案假设 tooltip 只在 'mousemove' 事件中显示。如果你的 tooltip 配置或其他事件处理程序会导致 tooltip 的显示,你可能需要进行额外的处理来保证 tooltip 在用户拖动时隐藏