跳转到内容

漫游式引导 Tour

Tour 是一个无渲染包装组件,负责管理步骤状态、高亮区域、浮层定位和按钮流转。

通过 visiblecurrent 以及对应的更新事件,可以把导览步骤完全交给业务状态控制。示例里把业务按钮放进当前高亮卡片,避免被遮罩挡住后无法点击。

Tour 的行为配置已经直接平铺到组件顶层 props,同时支持 buttonProps,让前进、后退、完成、关闭按钮直接使用组件库里的 Button props。

titledescriptionprogressfooter 以及各个按钮都支持 slot。示例里第一步展示组件化标题,第二步把描述区切换成更大的表格内容,popover 会通过 Motion 自动做平滑布局动画。

通过调低遮罩透明度等 Tour 配置,可以做成保留页面上下文的轻量导览。

如果你的页面里还存在抽屉、弹窗、吸顶层或第三方浮层,可以通过 zIndex 直接声明 Tour 的层级基准值;遮罩会使用该值,浮层和高亮元素会使用该值加 1。未传时会跟随组件库统一的 popup/dialog 层级管理,而不是从固定的 10000 开始。

参数名描述类型默认值
visible (v-model)导览是否可见boolean-
default-visible导览默认是否可见(非受控模式)booleanfalse
current (v-model)当前步骤下标number-
default-current默认步骤下标(非受控模式)number0
steps导览步骤配置TourStep[][]
z-index导览层级基准值;遮罩使用该值,浮层和高亮元素使用该值加 1number自动分配
animate是否启用过渡和 Motion 布局动画booleantrue
allow-close是否允许显示并触发关闭行为booleantrue
allow-keyboard-control是否启用键盘控制,支持 Esc、左右方向键booleantrue
overlay-click-behavior点击遮罩时的行为,可关闭、前进一步或自定义 hook'close' | 'nextStep' | TourStepHook'close'
overlay-opacity遮罩透明度number0.7
overlay-color遮罩颜色string'#000'
smooth-scroll步骤切换时是否平滑滚动到目标元素booleanfalse
disable-active-interaction是否禁止当前高亮元素交互booleanfalse
show-progress是否显示步骤进度booleanfalse
stage-padding高亮区域额外留白number10
stage-radius高亮区域圆角number5
popover-offset浮层与目标元素之间的偏移量number10
show-buttons默认显示哪些内置按钮TourAllowedButton[]['next', 'previous', 'close']
disable-buttons默认禁用哪些内置按钮TourAllowedButton[][]
prev-btn-text“上一步”按钮文案string'上一步'
next-btn-text“下一步”按钮文案string'下一步'
done-btn-text最后一步“完成”按钮文案string'完成'
progress-text进度文案模板,支持 {{current}}{{total}}{current}{total}string'{{current}} / {{total}}'
popover-class额外挂载到浮层容器上的 classstring-
button-props内置按钮的组件库按钮 propsTourButtonProps-
on-highlight-started步骤高亮开始前触发TourStepHook-
on-highlighted步骤高亮完成后触发TourStepHook-
on-deselected当前步骤取消高亮时触发TourStepHook-
on-destroyed导览销毁完成后触发TourStepHook-
on-destroy-started请求销毁导览时触发,可用于接管关闭流程TourStepHook-
on-popover-render浮层内容渲染后触发,可拿到浮层 DOM 引用TourPopoverRenderHook-
on-next-click点击“下一步/完成”按钮时触发;提供时将接管默认前进行为TourStepHook-
on-prev-click点击“上一步”按钮时触发;提供时将接管默认回退行为TourStepHook-
on-close-click点击关闭按钮时触发;提供时将接管默认关闭行为TourStepHook-
事件名描述参数
update:visible导览显隐状态变化时触发visible: boolean
visible-change导览显隐状态变化时触发visible: boolean
update:current当前步骤变化时触发current: number
change当前步骤变化时触发current: number, previous: number
close导览关闭时触发current: number | undefined
名称描述类型
drive从指定步骤开始启动导览(stepIndex?: number) => Promise<void>
moveNext前进到下一步() => void
movePrevious回到上一步() => void
moveTo跳转到指定步骤(stepIndex: number) => void
highlight高亮单个步骤(step: TourStep) => void
destroy销毁当前导览() => void
refresh刷新浮层和高亮位置() => void
isActive当前导览是否处于激活状态() => boolean
getController获取底层导览控制器() => TourController | null
getState获取底层导览状态() => TourState | undefined
插槽名描述参数
title自定义标题区域,可传入任意组件stepcurrenttitlecontrollerstate
description自定义描述区域,可传入任意组件stepcurrentdescriptioncontrollerstate
progress自定义进度文案区域stepcurrenttotaltextcontrollerstate
footer完整接管底部区域stepcurrentisFirstisLastmoveNextmovePreviousclosecontrollerstate
previous-button自定义“上一步”按钮内容stepcurrenttextcontrollerstate
next-button自定义“下一步/完成”按钮内容stepcurrentisLasttextcontrollerstate
close-button自定义关闭按钮内容stepcurrentcontrollerstate

TourStepTourConfigTourControllerTourState 等类型均从组件库导出,可直接在业务侧复用。

其中 TourConfig 用于声明导览级别配置,TourPopover 也支持在单个步骤内覆盖按钮 props、标题/描述属性和 footer 属性。