message 全局提示
用于操作结果的全局反馈组件,通过命令式的 message API 调用,渲染为可自动关闭的 toast。
适用场景:需要一条短暂、自动消失的 toast 来确认操作结果时,调用命令式的
message.info/success/warning/error/toastAPI 即可,不必手写标签。
快速开始
<r-button type="primary" onclick="message.info('这是一条提示')">点击触发全局提示</r-button>Message 通常在 JavaScript 中调用。组件模块加载后,全局 message 对象会立即挂载到 window 上(也可以通过 window.ranui.message 访问)。
message.info('这是一条提示');
message.success('项目已删除');API 参考
全局方法
每个方法都会追加一条 toast,并在 duration 毫秒后自动消失(默认 3000)。以下五个方法共享同一套签名。
| 方法 | 说明 |
|---|---|
message.info() |
中性信息提示(蓝色信息图标) |
message.success() |
成功提示(绿色对勾图标) |
message.warning() |
警告提示(琥珀色图标),以强调方式播报 |
message.error() |
错误提示(红色图标),以强调方式播报 |
message.toast() |
无图标的纯深色提示 |
方法签名
每个方法都接受一个 string(提示内容)或一个选项对象。
// 1. 传入字符串——仅设置内容,3000ms 后自动关闭
message.info('这是一条提示');
// 2. 传入选项对象
message.info({
content: '这是一条提示',
duration: 2000,
close: () => console.log('closed'),
});选项
| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
content |
string |
— | 显示的文本内容(以对象形式传入时为必填项) |
duration |
number |
3000 |
自动关闭的延时,单位毫秒 |
close |
() => void |
— | toast 被移除后触发的回调函数 |
top |
number | string |
8 |
toast 堆栈相对于所在容器顶部的偏移量(数字将按 px 处理) |
zIndex |
number | string |
1200 |
toast 容器的堆叠层级(z-index) |
getContainer |
() => HTMLElement | null |
document.body |
返回 toast 堆栈挂载到的目标元素 |
传入
null、undefined或空参数不会有任何效果,不会显示任何内容。
元素属性 r-message
每条 toast 都是一个 <r-message> 自定义元素。全局 API 会替你设置这些属性,但也可以直接使用它们。
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
type |
string |
— | info、success、warning、error、toast 之一,决定图标、颜色以及 ARIA live region 的角色 |
content |
string |
— | 渲染在 toast 内部的文本 |
sheet |
string |
'' |
注入到组件 Shadow DOM 中的 CSS |
提示类型 type
<r-button onclick="message.info('这是一条提示')">信息提示</r-button>
<r-button onclick="message.success('这是一条提示')">成功提示</r-button>
<r-button onclick="message.warning('这是一条提示')">警告提示</r-button>
<r-button onclick="message.error('这是一条提示')">错误提示</r-button>
<r-button onclick="message.toast('这是一条提示')">toast 提示</r-button>自定义时长 duration
<r-button onclick="message.info({ content: '停留 6 秒', duration: 6000 })">6 秒提示</r-button>
<r-button onclick="message.info({ content: '停留 1 秒', duration: 1000 })">1 秒提示</r-button>关闭回调 close
close 回调会在 toast 从 DOM 中移除后触发。
<r-button onclick="message.success({ content: '已保存', close: () => message.info('提示已关闭') })"
>关闭后触发提示</r-button
>message.success({
content: '已保存',
close: () => {
// toast 关闭后触发
console.log('toast closed');
},
});自定义位置 top / zIndex / getContainer
message.info({
content: '向下偏移',
top: 120, // 相对于容器顶部的距离
zIndex: 1300, // 堆叠层级
getContainer: () => document.querySelector('#app'), // 自定义挂载点
});样式
toast 堆栈挂载在一个传送到 body 的容器中;每个 <r-message> 都在其 Shadow DOM 内渲染内容,表面可通过 CSS 变量主题化(均带有合理的兜底值)。
| CSS 变量 | 默认值 | 说明 |
|---|---|---|
--ran-message-content-background |
var(--ran-color-bg-elevated) |
toast 表面背景色 |
--ran-message-content-border-radius |
var(--ran-radius-md) |
toast 圆角 |
--ran-message-content-box-shadow |
var(--ran-shadow-menu) |
toast 阴影层级 |
--ran-message-text-color |
var(--ran-color-text) |
toast 文本颜色 |
--ran-message-z-index |
var(--ran-z-message, 1200) |
堆栈层级(z-index) |
--ran-message-top |
8px |
堆栈相对顶部的偏移 |
最佳实践
- 陈述结果:把 toast 文案写成一个结果,比如「项目已删除」「已保存修改」,而不是含糊的「成功」。
- 成功 / 信息:使用
message.success/message.info表示不阻塞流程的确认。 - 错误 / 警告:使用
message.error/message.warning;它们会升级为强调(assertive)的 ARIA live region,让屏幕阅读器打断当前朗读进行播报。 - 保持简洁:toast 会自动消失,较长或需要用户操作的内容应放进对话框。
- 谨慎调整时长:可以为较长的文案适当延长
duration,但不要让短暂反馈变得常驻不消失。