UserGuide

用户引导:popup 模式复用本库 Popover(trigger="custom")贴气泡讲解 + svg mask 挖洞 spotlight 遮罩逐个高亮目标元素(4 块透明 rect 让高亮区可交互,目标不在视口时 scrollIntoView);modal 模式复用本库 Modal(header/footer=null、centered、bodyStyle padding:0)图文引导(cover 封面 + 圆点指示器)。步进状态机在 core createUserGuide:current 受控(提供 current 即受控,内部不改需配合 onChange 回写)/非受控,handlePrev/handleNext/handleSkip 回调去重(current 未变不 notify onChange),末步 handleNext 触发 onFinish,visible false→true 重置 current=0 并锁 body 滚动(getPopupContainer 时跳过、补偿滚动条宽),按钮显隐规则(跳过=非末步、上一步=非首步、下一步/完成)。指示器 popup 为纯文本 n/total(对齐 Semi 无 i18n),modal 为圆点。onFinish/onSkip 不自动关闭,使用方置 visible=false。严格对齐 Semi:无 focus-trap/inert/Esc/箭头键/进度 aria/live-announcer。

设计文档

如何引入

import { UserGuide } from '@chenzy-design/svelte';

基本用法

popup 气泡模式逐个高亮目标元素,配合标题与描述引导用户操作



Default Tag

主题

popup 气泡卡片提供 default 与 primary 两种主题,通过 theme 设置



Default Tag

气泡卡片弹出位置

popup 提供 12 种弹出位置,可通过 showArrow 设置是否显示箭头

设置高亮区域大小

通过 spotlightPadding 设置高亮区域内边距,支持 step 级覆盖



Default Tag

定制按钮

通过 nextButtonProps / prevButtonProps 与 finishText 定制按钮样式与文案



Default Tag

受控

通过 current + onChange 由外部状态托管当前引导步骤



Default Tag

弹窗式引导

mode="modal" 开启居中弹窗式图文引导,含封面图与底部圆点指示器

无遮罩

mask={false} 开启无遮罩引导,不遮挡背景内容

API 参考

UserGuide

Props

属性说明类型默认值
steps必填,引导步骤数组StepItem[][]
visible是否显示;false→true 重置到第 0 步booleanfalse
current当前步索引;提供即受控(内部不改,配合 onChange 回写)number0
modepopup=气泡+spotlight;modal=居中弹窗'popup'|'modal''popup'
mask是否显示遮罩booleantrue
theme气泡主题(popup)'default'|'primary''default'
position气泡相对目标位置(14 方位,可被 step 覆盖)Position'bottom'
spotlightPadding高亮区内边距 px(可被 step 覆盖)number5
showPrevButton显示上一步(首步自动隐藏)booleantrue
showSkipButton显示跳过(末步自动隐藏)booleantrue
finishText末步完成按钮文本stringi18n finish
nextButtonProps下一步按钮属性透传ButtonProps{}
prevButtonProps上一步按钮属性透传ButtonProps{}
getPopupContainer挂载父级;提供时不锁 body 滚动() => HTMLElementundefined
zIndex弹层/spotlight 层级number1030
class气泡 popover 类名stringundefined
style气泡 popover 内联样式stringundefined
onChange步骤改变(去重)(current: number) => voidundefined
onNext点下一步(非末步),参数为新 current(current: number) => voidundefined
onPrev点上一步,参数为 current-1(current: number) => voidundefined
onFinish末步点完成(不自动关闭)() => voidundefined
onSkip点跳过(不自动关闭)() => voidundefined

设计变量

变量默认值用法
--cd-userguide-modal-indicator-bg var(--cd-color-primary-light-active)modal 指示器未激活态(.cd-userGuide-modal-indicator-item)
--cd-userguide-modal-indicator-bg-active var(--cd-color-primary)modal 指示器激活态(.cd-userGuide-modal-indicator-item-active)
--cd-userguide-popup-text-default var(--cd-color-text-0)popup default 主题文字(.cd-userGuide-popup-content)
--cd-userguide-popup-text-primary var(--cd-color-tertiary-light-default)popup primary 主题文字(.cd-userGuide-popup-content-primary)
--cd-userguide-spotlight-mask-bg var(--cd-color-overlay-bg)popup spotlight 遮罩背景(.cd-userGuide-spotlight rect fill)