Skip to content

message 全局提示

用于操作结果的全局反馈组件,通过命令式的 message API 调用,渲染为可自动关闭的 toast。

适用场景:当你需要一条短暂、自动消失的 toast 来确认操作结果时——调用命令式的 message.info / success / warning / error / toast API,而不是编写标签。

快速开始

点击触发全局提示
html
<r-button type="primary" onclick="message.info('这是一条提示')">点击触发全局提示</r-button>

Message 通常在 JavaScript 中调用。组件模块加载后,全局 message 对象会立即挂载到 window 上(也可以通过 window.ranui.message 访问)。

js
message.info('这是一条提示');
message.success('项目已删除');

API 参考

全局方法

每个方法都会追加一条 toast,并在 duration 毫秒后自动消失(默认 3000)。以下五个方法共享同一套签名。

方法说明
message.info()中性信息提示(蓝色信息图标)
message.success()成功提示(绿色对勾图标)
message.warning()警告提示(琥珀色图标),以强调方式播报
message.error()错误提示(红色图标),以强调方式播报
message.toast()无图标的纯深色提示

方法签名

每个方法都接受一个 string(提示内容)或一个选项对象。

js
// 1. 传入字符串——仅设置内容,3000ms 后自动关闭
message.info('这是一条提示');

// 2. 传入选项对象
message.info({
  content: '这是一条提示',
  duration: 2000,
  close: () => console.log('closed'),
});

选项

选项类型默认值说明
contentstring显示的文本内容(以对象形式传入时为必填项)
durationnumber3000自动关闭的延时,单位毫秒
close() => voidtoast 被移除后触发的回调函数
topnumber | string8toast 堆栈相对于所在容器顶部的偏移量(数字将按 px 处理)
zIndexnumber | string1200toast 容器的堆叠层级(z-index)
getContainer() => HTMLElement | nulldocument.body返回 toast 堆栈挂载到的目标元素

传入 nullundefined 或空参数不会有任何效果——不会显示任何内容。

元素属性 r-message

每条 toast 都是一个 <r-message> 自定义元素。全局 API 会替你设置这些属性,但也可以直接使用它们。

属性类型默认值说明
typestringinfosuccesswarningerrortoast 之一,决定图标/颜色以及 ARIA live region 的角色
contentstring渲染在 toast 内部的文本
sheetstring''注入到组件 Shadow DOM 中的 CSS

提示类型 type

信息提示
成功提示
警告提示
错误提示
toast提示
html
<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

6 秒提示
1 秒提示
html
<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 中移除后触发。

关闭后触发提示
html
<r-button onclick="message.success({ content: '已保存', close: () => message.info('提示已关闭') })"
  >关闭后触发提示</r-button
>
js
message.success({
  content: '已保存',
  close: () => {
    // toast 关闭后触发
    console.log('toast closed');
  },
});

自定义位置 top / zIndex / getContainer

顶部偏移
js
message.info({
  content: '向下偏移',
  top: 120, // 相对于容器顶部的距离
  zIndex: 1300, // 堆叠层级
  getContainer: () => document.querySelector('#app'), // 自定义挂载点
});

样式

toast 堆栈挂载在一个传送到 body 的容器中;每个 <r-message> 都在其 Shadow DOM 内渲染内容,表面可通过 CSS 变量主题化(均带有合理的兜底值)。

CSS 变量默认值说明
--ran-message-content-backgroundvar(--ran-color-bg-elevated)toast 表面背景色
--ran-message-content-border-radiusvar(--ran-radius-md)toast 圆角
--ran-message-content-box-shadowvar(--ran-shadow-menu)toast 阴影层级
--ran-message-text-colorvar(--ran-color-text)toast 文本颜色
--ran-message-z-indexvar(--ran-z-message, 1200)堆栈层级(z-index)
--ran-message-top8px堆栈相对顶部的偏移

最佳实践

  • 陈述结果:把 toast 文案写成一个结果——「项目已删除」「已保存修改」——而不是含糊的「成功」。
  • 成功 / 信息:使用 message.success / message.info 表示不阻塞流程的确认。
  • 错误 / 警告:使用 message.error / message.warning;它们会升级为强调(assertive)的 ARIA live region,让屏幕阅读器打断当前朗读进行播报。
  • 保持简洁:toast 会自动消失——较长或需要操作的内容应放进对话框。
  • 谨慎调整时长:可以为较长的文案适当延长 duration,但不要让短暂反馈变得常驻不消失。

Released under the MIT License.