Tour 引导
分步功能引导,带全屏遮罩与目标高亮。支持 12 向定位与溢出翻转、滚动跟随、遮罩/形态定制、键盘导航、异步步骤、hints 信标与「不再显示」记忆。
基础用法
开始引导
引导事件
oas-step 步骤切换携带 detail: { index, current, total, next, prev };关闭类事件(cancel/finish/close/skip/destroy)携带 detail: { index, total }。
步骤事件
受控步骤与开关
open 与 current 均为受控属性:外部按钮 / JS 设置 open 启动引导,设置 current 直接跳到指定步骤(无需逐步点击)。
受控 open / current
定位与箭头
placement 支持 12 向(top/bottom/left/right × start/end/center)+ center,空间不足时自动沿主轴翻转;arrow="false" 隐藏箭头。
12 向定位与自动翻转
滚动到目标与重定位
目标在视口外时自动滚动到目标(scroll-into-view-options 透传,scroll-padding 写目标 scroll-margin 留白);引导期间滚动/resize 高亮与弹层自动跟随(auto-reposition,默认开启)。
滚动到目标与滚动跟随
遮罩与形态
mask="false" 关闭遮罩(非模态,引导期间页面其余区域可交互);mask='{"color":"..."}' 定制遮罩颜色;type="primary" 主色底弹层强调;gap 控制高亮内边距与圆角(数字或 {padding, radius})。
非模态 + 主色弹层
键盘导航与指示器
keyboard(默认开启)支持 ←/→ 推进步骤;show-bullets 圆点指示器可点击跳步;show-progress 顶部进度条;progress-text 模板(/)自定义计数文本;indicators="number" 数字计数。
键盘导航 + 圆点 + 进度条
按钮显隐与透传
hide-prev / hide-skip / hide-next / hide-counter 控制按钮与计数显隐;*-button-props(next/prev/skip/finish)透传任意属性到按钮(JSON 对象)。
按钮显隐与属性透传
关闭按钮定制
show-close="false" 隐藏关闭按钮;close-icon 自定义关闭按钮内容(HTML)。
关闭按钮定制
遮罩点击与高亮区交互
mask-click-behavior:close(默认)/ next(点击遮罩推进)/ none(忽略);target-area-clickable 高亮区可点击(点击穿透目标);disabled-interaction 禁止高亮区交互;advance-on-click 点击高亮区推进(交互式引导「点这里试试」)。
遮罩点击行为 + 高亮区交互
异步步骤
wait-for-element(毫秒)等待目标出现(如「上一步点击打开了弹窗,等里面元素渲染」);skip-missing-element 目标缺失/等待超时自动跳过该步骤。
异步目标等待与跳过
对话框模式
mode="dialog"(或 step 级 mode: "dialog")无目标居中对话框步骤,作为一等形态混入引导。
对话框模式
生命周期事件
oas-highlight-start / oas-highlight-end 在步骤高亮开始/完成时派发(异步等待命中后触发);oas-destroy 在引导关闭时派发(含外部移除 open)。
生命周期事件
不再显示与多页引导
dont-show-again 关闭时勾选「不再显示」,经 storage-key 记忆到 localStorage,下次启动被拦截并派发 oas-dismiss;persist 把 open/current 状态持久化,路由切换重新挂载后自动恢复(多页引导)。
「不再显示」记忆
多页引导(persist)
打字机与锁滚动
typewriter + typewriter-speed 描述逐字显示动画;lock-scroll 引导期间锁定页面滚动;close-on-press-escape="false" 关闭 Esc。
打字机动画 + 锁滚动
hints 信标模式
hints 常驻脉冲信标(无需 open),点击弹出气泡;dismissable + id 的提示关闭后记忆到 localStorage(oas-tour-hint-${id})不再显示。
hints 信标模式
挂载点与层级
append-to="body"(或选择器)把整个浮层挂载到指定容器;z-index 定制层级。
挂载点与层级
API
属性
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
advance-on-click | 点击高亮区推进下一步(交互式引导) | boolean | — |
append-to | 挂载点:body 或 CSS 选择器(整个浮层移入目标容器) | string | — |
arrow | 是否显示箭头(布尔,默认 true,false 隐藏) | string | true |
auto-reposition | 滚动/resize 时自动重定位(默认 true) | string | true |
close-icon | 自定义关闭按钮内容(HTML 字符串) | string | — |
close-on-press-escape | Esc 关闭(默认 true) | string | true |
current | 当前步骤索引 | string | 0 |
disabled-interaction | 禁止高亮区交互(拦截层覆盖目标) | — | — |
dont-show-again | 「不再显示」开关(布尔;关闭时勾选则记忆到 localStorage) | boolean | — |
finish-button-props | 完成按钮透传属性(JSON 对象) | — | — |
gap | 高亮内边距:数字(padding px)或 {"padding","radius"}(半径);默认 padding 4 | string | — |
hide-counter | 隐藏步骤计数 | boolean | — |
hide-next | 隐藏下一步按钮 | — | — |
hide-prev | 隐藏上一步按钮 | — | — |
hide-skip | 隐藏跳过按钮 | — | — |
hints | hints 信标模式:JSON [{id,selector,title,description,placement,dismissable}],常驻脉冲点,点击弹气泡,dismissable 关闭后记忆 | string | [] |
indicators | 计数样式:dots(默认)/ number / none | string | dots |
keyboard | 键盘 ←/→ 推进步骤(默认 true,false 关闭) | string | true |
lock-scroll | 引导期间锁定页面滚动(关闭恢复) | boolean | — |
mask | 遮罩开关/定制:false 关闭(非模态)或 {"color","style"} 定制颜色样式(默认 true);step 级可覆盖 | string | true |
mask-click-behavior | 遮罩点击行为:close(默认)/ next(推进)/ none(忽略) | string | close |
mode | 弹层模式:popup(默认)/ dialog(无目标居中对话框);step 级可覆盖 | string | popup |
next-button-props | 下一步按钮透传属性(JSON 对象,如 {"data-x":"1"}) | — | — |
open | 开始引导(布尔属性,存在即启动) | boolean | — |
persist | 多页引导:open/current 状态持久化到 localStorage,重新连接时恢复 | boolean | — |
placement | 弹层方位:12 向(top/bottom/left/right × start/end/center)+ center(空 target 居中);默认 bottom;空间不足自动翻转;step 级可覆盖 | TourPlacement | bottom |
prev-button-props | 上一步按钮透传属性(JSON 对象) | — | — |
progress-text | 进度文本模板:/ 替换;设置后计数区用模板渲染 | string | — |
scroll-into-view-options | 滚动到目标的 scrollIntoView options(JSON,默认 {"behavior":"smooth","block":"center"}) | string | — |
scroll-padding | 滚动到目标时的留白(px,写目标 scroll-margin) | — | — |
show-bullets | 圆点指示器(点击圆点跳步) | boolean | — |
show-close | 显示关闭按钮(默认 true,false 隐藏) | string | true |
show-progress | 弹层顶部进度条(宽度随步骤推进) | boolean | — |
skip-button-props | 跳过按钮透传属性(JSON 对象) | — | — |
skip-missing-element | 目标缺失/等待超时跳过该步骤(默认停在当前步骤) | boolean | — |
steps | 步骤 JSON(TourStep[] | string);property 赋值支持函数/元素 target | TourStep[] | string | [] |
storage-key | localStorage 记忆键(dont-show-again / persist / hint dismiss 共用) | string | oas-tour-dismiss |
target-area-clickable | 高亮区可交互(拦截层隐藏,点击穿透目标) | string | false |
type | 弹层类型:default / primary(主色底弹层,非模态场景强调) | string | default |
typewriter | 打字机动画:描述逐字显示 | string | false |
typewriter-speed | 打字机速率(ms/字符,默认 20) | string | 20 |
wait-for-element | 等待目标出现(毫秒,异步步骤;全局默认,step 级 waitForElement 优先) | — | — |
z-index | 遮罩层级(默认 --oas-z-modal) | — | — |
事件
| 事件 | 说明 |
|---|---|
oas-cancel | 跳过 / Esc / 遮罩点击关闭,detail: { index, total, source }(source: skip/esc/close/mask) |
oas-close | 点击关闭按钮,detail: { index, total } |
oas-destroy | 引导关闭(含外部移除 open),detail: { index, total } |
oas-dismiss | 「不再显示」命中,引导启动被拦截,detail: {} |
oas-finish | 最后一步点击「完成」,detail: { index, total } |
oas-highlight-end | 步骤高亮完成,detail: { index, total } |
oas-highlight-start | 步骤高亮开始(异步等待命中后),detail: { index, total } |
oas-skip | 点击「跳过」按钮,detail: { index, total } |
oas-step | 步骤切换,detail: { index, current, total, next, prev } |
插槽
| 名称 | 说明 |
|---|---|
cover | 步骤封面富内容(插槽优先于 step.cover 图片) |
遮罩高亮目标,role="dialog" + aria-modal="true";支持「上一步 / 下一步 / 跳过」、键盘 ←/→ 与 Esc。