Skip to content

Anchor 锚点

用于长内容区域和长对话场景的目录导航。

代码示例

BubbleList 场景

loading

使用要点:

  1. 目录项 id 与目标节点上的 data-anchor-id 保持一致。
  2. 如果 BubbleList 本身承担滚动,可直接将它的 ref 作为 scrollContainer 来源。
  3. 目录显示文案和搜索文案通过 label / searchText / tooltipText 配置。
  4. 需要搜索时传入 searchOptions;需要外部同步搜索词时使用 v-model:searchQuery
  5. 需要点击反馈时,使用 targetFeedbackClass / targetFeedbackDuration
  6. 紧凑会话场景建议让 activeOffset 与目标节点的 scroll-margin-top 保持一致,避免目录激活项提前切换。

普通内容场景

loading

使用要点:

  • 章节节点直接设置 data-anchor-id
  • 容器内滚动场景传入 scrollContainer
  • 建议让 activeOffset 与章节节点的 scroll-margin-top 保持一致。
  • expanded 仅在 expandTrigger="manual" 时生效。

Props

属性类型默认值说明
itemsAnchorItem[]-目录项列表。组件默认使用 item.id 匹配 [data-anchor-id="<id>"],并滚动到对应节点
scrollContainerHTMLElement | nullnull滚动容器。传入后在该容器内解析目标节点并监听其滚动;未传入时回退到页面文档滚动
activeOffsetnumber120激活项判定时距离滚动容器顶部的偏移量
searchQuerystring非受控搜索词。传入后进入受控模式
searchOptionsAnchorSearchOptions-搜索区配置。不传时不显示搜索区
tooltipDelaynumber260tooltip 显示延迟,避免展开动画过程中短文本被误判为截断
activeIdstring非受控当前激活项。传入后进入受控模式
expandedbooleanfalse展开状态。仅在 expandTrigger="manual" 时生效
placement'left' | 'right''right'停靠位置
expandTrigger'hover' | 'manual''hover'展开方式。hover 为自动展开,manual 为不自动展开
targetFeedbackClassstring-点击目录项后追加到目标节点上的样式类名
targetFeedbackDurationnumber700目标节点样式类名保留时间,单位为毫秒
emptyTextstring'No matching items'搜索无结果文案

Slots

插槽参数说明
item{ item, segments, active, expanded, highlighted }自定义目录项内容
marker{ item, active }自定义目录点
search{ searchQuery, setSearchQuery, searchOptions }自定义搜索区
empty-自定义空结果内容

Events

事件参数说明
update:activeIdvalue: string | undefined当前激活项变化
update:expandedvalue: boolean展开状态变化
update:searchQueryvalue: string搜索词变化
selectitem: AnchorItem目录项被选中时触发

Types

AnchorItem

字段类型说明
idstring唯一标识,同时用于匹配目标节点
labelstring目录显示文本
searchTextstring搜索时额外匹配的文本
tooltipTextstring自定义 tooltip 文案
metaRecord<string, unknown>自定义透传数据

AnchorSearchOptions

字段类型说明
placeholderstring搜索框占位文案
matcherAnchorSearchMatcher自定义搜索匹配逻辑
clearOnCollapseboolean收起时是否清空搜索词

AnchorSearchMatcher

ts
type AnchorSearchMatcher = (
  item: AnchorItem,
  searchQuery: string,
) => false | AnchorHighlightSegment[]

返回 false 表示当前项不匹配;返回高亮片段数组表示匹配成功,并使用返回结果渲染高亮内容。

CSS 变量

CSS 变量说明
--tr-anchor-width-collapsed折叠态宽度
--tr-anchor-width-expanded展开态宽度
--tr-anchor-surface-radius面板圆角
--tr-anchor-item-radius目录项圆角
--tr-anchor-marker-width目录点宽度
--tr-anchor-marker-height目录点高度
--tr-anchor-marker-radius目录点圆角
--tr-anchor-marker-track-size目录点轨道尺寸
--tr-anchor-bg面板背景色
--tr-anchor-border面板边框色
--tr-anchor-shadow面板阴影
--tr-anchor-item-color目录项文本色
--tr-anchor-item-color-active激活目录项文本色
--tr-anchor-item-bg-hover目录项 hover 背景色
--tr-anchor-marker-color默认目录点颜色
--tr-anchor-marker-color-active激活目录点颜色
--tr-anchor-tooltip-bgtooltip 背景色
--tr-anchor-tooltip-colortooltip 文本色
--tr-anchor-tooltip-shadowtooltip 阴影
--tr-anchor-search-bg搜索框背景色
--tr-anchor-search-color搜索框文本色
--tr-anchor-search-border搜索框边框色
--tr-anchor-search-border-focus搜索框聚焦边框色
--tr-anchor-search-focus-ring搜索框聚焦外环
--tr-anchor-search-radius搜索框圆角
--tr-anchor-empty-color空结果文本色
--tr-anchor-focus-ring目录项聚焦外环
--tr-anchor-highlight-color搜索高亮色