Toast 轻提示
命令式全局轻提示,支持成功/错误/警告/信息/加载态、操作按钮、promise 链、队列治理与键盘/读屏无障碍,默认 3 秒自动关闭。
基础用法
五种类型
自定义时长
自定义时长
操作按钮
操作按钮(多按钮 + noDismiss + 变体)
位置
位置(9 方向)
Promise 链
Promise 链
生命周期与 onClose
生命周期与 onClose 回调
按 id 更新与关闭
按 id 更新与关闭
通知风暴治理
max 队列与同内容去重
「连点触发」超出 3 条排队,关闭后自动补位;优先级 priority 可让高优先级抢占可见位。
阅读宽限
hover/聚焦暂停计时 + 剩余时间进度条
窗口失焦(切走标签页/窗口)同样暂停;`pauseOnHover`/`pauseOnFocus`/`pauseOnWindowBlur` 可单独关闭。
键盘与读屏
Esc 关闭与屏幕阅读器敏感度
滑动关闭
滑动关闭(swipe)
折叠堆叠
折叠堆叠(+N 收纳 / hover 展开)
折叠后最新一条全显,其余 peek 层叠并出现 +N 徽标;悬停/聚焦展开,点击 +N 持久展开。
变体与动画
变体(plain/translucent)与动画配置
动画时长/曲线走 CSS 变量 `--oas-toast-enter-duration` / `--oas-toast-leave-duration` / `--oas-toast-ease`,无需 JS 配置。
全局默认配置
全局默认配置(toast.config)
挂载点与命名实例
挂载点控制与命名实例
声明式用法
声明式用法(受控 open)
API
方法
| 方法 | 说明 |
|---|---|
toast.info(options) | 信息提示,返回 { close, update } |
toast.success(options) | 成功提示,返回 { close, update } |
toast.warning(options) | 警告提示,返回 { close, update } |
toast.error(options) | 错误提示,返回 { close, update } |
toast.loading(options) | 加载提示(不可关),返回 { close, update } |
toast.promise(promise, opts) | promise 链:loading → success/error |
toast.update(id, options) | 按 id 原位更新;id 不存在则新建 |
toast.dismiss(id) | 按 id 关闭(可见或排队中) |
toast.config(options) | 全局默认配置(调用参数优先) |
toast.toaster(name) | 命名实例:独立栈/队列/配置 |
destroyAllToast() | 清空全部实例 |
options
| 字段 | 说明 | 类型 | 默认值 |
|---|---|---|---|
title | 标题(string 或 Node) | string | Node | — |
description | 描述 | string | — |
action / actions | 操作按钮(多按钮 + noDismiss + variant) | ToastAction | ToastAction[] | — |
duration | 自动关闭时长(ms),0 不关闭 | number | 3000 |
closable | 是否可手动关闭(loading 恒关) | boolean | true |
position | 位置(9 方向) | ToastPosition | top-right |
id | 唯一标识:供 update / dismiss 定位 | string | — |
onClose | 关闭回调(自动/手动/按钮/dismiss/destroyAll 均触发一次) | () => void | — |
priority | 优先级:与 max 队列配合,高优先级抢占可见位 | number | 0 |
max | 该位置栈最大可见数,超限排队 | number | Infinity |
politeness | 读屏敏感度:assertive / polite | string | 按类型 |
showProgress | 剩余时间进度条(duration>0 时显示) | boolean | false |
progressRing | 进度环式关闭按钮(duration>0 时显示) | boolean | false |
grouping | 同内容去重:同栈同内容合并并递增计数徽标 | boolean | false |
swipeDirection | 滑动关闭方向:both/right/left/up/down | string | both |
stacked | 折叠堆叠模式(+N 收纳 / peek 层叠) | boolean | false |
variant | 变体:solid/plain/translucent | string | solid |
container | 挂载点(元素或函数),覆盖默认宿主 | HTMLElement | () => HTMLElement | — |
pauseOnHover / pauseOnFocus / pauseOnWindowBlur | 暂停计时开关(默认全开) | boolean | true |
oas-toast
属性
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
closable | 是否显示关闭按钮(loading 态强制不可关) | boolean | — |
count | 同内容去重计数徽标:命令式 grouping 开启时同签名重复派发递增计数(标题行旁 ×N,>1 才显示)并重置计时 | string | 0 |
description | 描述文案 | string | — |
duration | 自动关闭时长(ms),0 表示不自动关闭 | string | 3000 |
id | 实例标识:命令式 show/update/dismiss 按 id 命中既有实例原位更新/关闭而非新建;同时作为 DOM id | — | — |
open | 受控开关(声明式用法):open="false" 整卡隐藏且自动关闭计时暂停;缺省/其他值视为打开 | string | true |
pause-on-focus | 焦点进入时暂停自动关闭计时(默认开;"false" 关闭) | — | — |
pause-on-hover | 悬停时暂停自动关闭计时(默认开;"false" 关闭) | — | — |
pause-on-window-blur | 窗口失焦/页面隐藏时暂停自动关闭计时(默认开;"false" 关闭) | — | — |
politeness | 读屏敏感度:polite(role=status)/ assertive(role=alert 立即打断);显式设置优先,缺省按 type(error 走 assertive,其余 polite) | string | — |
progress-position | 进度条位置:bottom(默认)/ top,配合 show-progress | string | bottom |
progress-ring | 关闭按钮进度环形态:✕ 外圈 SVG 圆环表示剩余时间(duration > 0 时随时长走完) | boolean | — |
show-progress | 显示自动关闭剩余时间进度条(时长随 duration,暂停时定格) | boolean | — |
swipe-direction | 滑动关闭方向:both(默认)/ right / left / up / down;非配置方向 0.2 阻尼跟随 | string | both |
title | 标题文案(渲染进可见标题区;读取后即从宿主移除,不残留原生悬浮提示;清空传空串);富内容用 slot="title" | string | — |
type | 提示类型:info/success/warning/error/loading | string | info |
variant | 视觉变体:默认卡片 / plain(无边框无底纹文本直出)/ translucent(半透明毛玻璃) | — | — |
事件
| 事件 | 说明 |
|---|---|
oas-close | 关闭时派发,detail: { trigger }(trigger: auto/manual/action/close-button/esc/swipe/preempt/external);离场动画后移除节点 |
oas-destroy | 节点从 DOM 移除后派发(含外部 remove 兜底),detail: { trigger };promise 链收尾用 |
oas-open | 展示时派发,detail: { trigger } |
插槽
| 名称 | 说明 |
|---|---|
title | 标题富内容插槽,有内容时覆盖 title 属性文案 |
CSS 变量
| CSS 变量 | 说明 | 默认值 |
|---|---|---|
--oas-glass-blur | — | none |
--oas-glass-refraction | 液态玻璃边缘折射滤镜(data-glass 生效,默认 none);局部停用覆盖为空值(--oas-glass-refraction: ;)——不得用 none(与 button 态的 brightness() 混排会使整条 filter 声明非法) | none |
--oas-glass-ring | — | transparent |
--oas-toast-ease | — | ease |
--oas-toast-enter-duration | — | 0.2s |
--oas-toast-leave-duration | — | 0.2s |
error类型默认role="alert"+aria-live="assertive",其余role="status"+aria-live="polite";politeness可覆盖。- 多个 toast 共用一个栈容器,同一方向按位置堆叠;
duration计时器在关闭/卸载时清理,无泄漏。 - 动画时长/曲线经 CSS 变量
--oas-toast-enter-duration/--oas-toast-leave-duration/--oas-toast-ease配置。