千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > echartstooltip被遮挡

echartstooltip被遮挡

来源:千锋教育
发布人:xqq
时间: 2023-11-25 12:07:00 1700885220

一、问题描述

当使用 echarts 在页面中展示图表时,鼠标移动到图表上会出现 echarts 的提示框(tooltip)。但是,当页面中有较多的图形、文本等元素时,echarts 的提示框可能会被遮挡,导致无法显示完整的内容。

二、影响因素

1、提示框的层级过低

echarts 的提示框默认的 z-index 值为 7,如果页面中其他元素的层级高于 7,就可能会遮挡提示框。


// 解决方案:可以通过设置提示框的 z-index 值为一个较大的值,如:
option.tooltip.zIndex: 9999;

2、父元素的 overflow 属性

当提示框的父元素设置了 overflow: hidden,就会导致提示框被裁剪掉一部分。


// 解决方案:可以通过将提示框的父元素的 overflow 属性设置为 visible,如:
/* css */
.echarts-wrap {
  overflow: visible !important;
}
/* js */
var chart = echarts.init(document.getElementById('chartId'));
chart._dom && (chart._dom.style.overflow = 'visible');

3、提示框的位置

当提示框的位置被一些元素(如柱状图的柱子)遮挡时,要么改变提示框的位置,要么将遮挡元素的 z-index 值调小。


// 解决方案:可以通过设置提示框的 position 属性为 data 或者其他矩形内部的居中位置,如:
option.tooltip.position: 'inside';

三、诊断工具

除了通过手动调节上述因素来解决问题,还可以使用 Chrome 开发者工具中的「可见性」功能快速定位问题所在。

在 Chrome 中打开开发者工具,点击 Elements 选项卡,找到页面中的 echarts 元素,右键点击选择「检查」,在 Elements 面板中将鼠标移至样式栏中的 tooltip 元素,勾选 Show User Agent Shadow DOM 和 Show User Agent Browser Shadow DOM 两个选项,若 tooltip 元素被遮挡,则显示为半透明的灰色。


// 解决方案:根据定位到的遮挡元素,逐一尝试修改其相关样式来解决问题。

四、实际案例

以下是一个使用 echarts 展示柱状图的示例。当图表区域被其他元素遮挡时,提示框可能无法完整展示。

案例代码:




   
      
      echarts tooltip 被遮挡
      
      
   
   
      

在该示例中,图表区域被一个灰色方块元素遮挡,当移动鼠标到柱子上时,提示框将无法完整展示。

为了解决问题,我们可以通过将提示框的 z-index 值提高,同时将遮挡元素的 z-index 值降低来解决问题:


/* css */
.echarts-tooltip {
  z-index: 9999;
}
.gray-box {
  z-index: 1;
}

加入以上代码后,再次查看页面,发现提示框已完整展示。

五、总结

当 echarts 的提示框被遮挡时,很可能是由于提示框的层级、父元素的 overflow 属性或提示框的位置等因素引起的。在解决问题时,可以通过手动调节相应的样式来解决,也可以使用 Chrome 开发者工具进行辅助诊断。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT