菜单

提示框系统

相关源文件

Apache ECharts 的 Tooltip 系统在用户将鼠标悬停或单击图表元素时,提供交互式数据信息显示。本页面记录了 tooltip 组件的内部架构和功能,包括其渲染模式、配置选项和定位机制。有关如何配置图表中 tooltip 的信息,请参阅公共 API 文档。

概述

tooltip 组件在用户与图表交互时显示额外信息。它可以由各种事件(鼠标悬停、点击)触发,并能以不同格式(纯文本、HTML 或富文本)显示数据。

来源

架构

Tooltip 系统由几个关键组件组成

组件层次结构

来源

渲染过程

Tooltip 显示流程

来源

Tooltip 内容类型

Tooltip 系统支持两种内容渲染模式

1. HTML 模式

默认模式使用 HTML DOM 元素渲染 tooltips。这由 TooltipHTMLContent 类处理,该类创建和管理 tooltip 的 DOM 元素。

优点

  • 更好的文本渲染
  • 支持复杂的布局
  • 更好地与外部样式集成

HTML 内容通过以下方式创建和管理

  • 创建 DOM 元素
  • 通过 innerHTML 或追加 DOM 节点设置内容
  • 使用 CSS 进行样式设置
  • 通过 CSS transform 或直接的 position 属性进行定位

来源

2. 富文本模式

或者,可以通过 TooltipRichContent 类使用 canvas/SVG 渲染器渲染 tooltips。这会为 tooltip 创建一个 ZRender 文本元素。

优点

  • 与图表渲染一致
  • 更好的动画性能
  • 无 DOM 操作

富文本内容通过以下方式创建和管理

  • 创建 ZRText 元素
  • 通过文本和富文本样式对象设置内容
  • 使用 ZRender 样式属性进行样式设置
  • 通过直接的 x/y 坐标进行定位

来源

Tooltip 配置

Tooltip 系统通过 TooltipModel 高度可配置,其中包含所有 tooltip 选项的默认值和处理逻辑。

关键配置选项

选项类型默认描述
show布尔值true是否显示 tooltip
trigger字符串'item'tooltip 的触发方式('item', 'axis', 'none'
triggerOn字符串'mousemove|click'触发 tooltip 显示的事件
alwaysShowContent布尔值false是否始终显示 tooltip 内容
renderMode字符串'auto'渲染模式('html''richText'
confine布尔值-是否将 tooltip 限制在图表区域内
positionstring/Array/Function-Tooltip 位置
formatterstring/Function-Tooltip 内容格式化器
backgroundColor字符串'#fff'Tooltip 背景色
borderColor字符串-Tooltip 边框颜色
textStyle对象-tooltip 内容的文本样式

来源

Tooltip 定位

Tooltip 系统包含复杂的定位逻辑,由 TooltipView 中的 _updatePosition 方法处理。

定位选项

  1. 固定位置:指定精确坐标
  2. 相对位置:相对于数据点指定('top', 'left', 'bottom', 'right'
  3. 自定义位置函数:动态计算位置
  4. 自动位置:自动定位以避免在容器外剪裁

定位代码处理以下事项

  • 将百分比转换为像素
  • 根据 tooltip 大小计算最佳位置
  • 将 tooltip 限制在图表区域内
  • 将 tooltip 与数据点或轴线对齐

来源

Tooltip 内容格式化

Tooltip 内容可以通过 formatter 选项以多种方式格式化。

格式化选项

  1. 字符串模板:使用模板变量,例如 {a}, {b}, {c}
  2. 函数回调:返回自定义内容(字符串、DOM 元素或标记结构)
  3. 标记结构:使用 tooltipMarkup 模块创建结构化内容

Tooltip 标记

Tooltip 标记系统提供了一种结构化方式来创建 tooltip 内容

createTooltipMarkup 函数有助于创建这些结构,然后会根据当前渲染模式(HTML 或富文本)进行渲染。

来源

系列集成

系列可以通过 Series 模型提供的 formatTooltip 方法来定义它们的数据如何在 tooltips 中显示。

默认实现创建具有系列名称、数据名称和值的结构化 tooltip 内容。系列可以通过覆盖此方法来提供自定义 tooltip 内容。

来源

程序化控制

可以使用 ECharts API 通过程序化控制 tooltip

手动显示/隐藏

这些操作由 TooltipView 中的 manuallyShowTipmanuallyHideTip 方法处理。

来源

Tooltip 与其他组件的交互

Tooltip 系统与 ECharts 中的几个其他组件进行交互

轴指示器集成

trigger: 'axis' 时,tooltips 与轴指示器系统协同工作,以显示与轴对齐的数据。

系列高亮

当显示 tooltips 时,可以通过 emphasis visual 状态高亮相应的系列项。

工具箱组件集成

Tooltip 系统也用于在用户将鼠标悬停在工具箱按钮上时显示解释性文本。

来源

性能考量

为了优化性能,tooltip 系统

  1. 使用节流的定位更新,以防止过度的渲染
  2. 仅在需要时惰性创建 tooltip DOM 元素
  3. 提供禁用过渡动画的选项
  4. 为不同的性能需求提供不同的渲染模式

来源